Linux环境变量课堂笔记+课后习题
一、课堂核心知识点总结
- 环境变量基础概念
(1) 定义:由 变量名=值 组成,用于在操作系统、Shell、程序间传递环境配置数据,bash中分为全局变量、局部变量两类。
(2) 命名规范:系统内置变量全大写;自定义局部变量建议小写,避免覆盖系统变量;赋值时 变量、=、值 之间不能有空格。
(3)区分全局/局部变量- 全局变量:当前Shell及所有子Shell均可访问, env/printenv 查看; echo $变量名 读取单变量。
局部变量:仅当前创建Shell可用,子Shell无法读取; set 可查看全部变量(全局+局部+自定义)。
2.自定义变量操作
(1)局部变量
直接赋值: 变量=值 ;值含空格需单/双引号包裹;退出Shell后自动失效。
(2)全局变量
先定义局部变量,再用 export 变量 导出为全局;子Shell修改该变量不会同步父Shell原值。
(3)删除变量
unset 变量名 (操作变量不加,读取变量才加);子Shell删除全局变量仅作用于自身,父Shell不受影响。
- Shell默认内置环境变量
(1)Bourne基础变量:HOME、IFS、MAIL、CDPATH、提示符PS1/PS2等;
(2)Bash独有变量:BASH、HOSTNAME、LINES、PWD、UID、GROUPS数组等,记录会话、用户、终端信息。
- PATH可执行文件搜索路径
(1) 作用:Shell输入命令时,按PATH内冒号分隔的目录依次查找程序;目录不在PATH中则无法直接运行脚本。
(2)临时追加路径: PATH=$PATH:/目标目录 ,仅当前会话生效,重启/重登失效。
(3) 脚本运行前置: chmod u+x 脚本.sh 赋予执行权限。
- 环境变量持久化配置文件(登录Shell自动加载)
(1) 系统级(所有用户生效): /etc/profile ,加载 /etc/profile.d/ 下所有.sh脚本;
(2) 用户级(仅当前用户)加载顺序: .bash_profile → .bash_login → .profile ,只会执行第一个存在文件;文件内会自动引入 .bashrc ;
(3) 永久配置变量:将export/PATH修改写入上述启动文件,登录自动生效。
- Shell数组变量
(1)定义: 数组名=(值1 值2 值3) ,下标从0开始;
(2)读取: ${数组[下标]} 取单个元素、 ${数组[*]} 读取全部元素;
(3)#修改/删除: 数组[下标]=新值 修改元素; unset 数组[下标] 删除单个元素(保留空位); unset 数组名 清空整个数组。
课后练习
实验一、父shell定义局部变量,子shell查看
1.父shell创建局部变量
2.父shell先验证
3.进入子shell
实验二、子shell定义局部变量,退出后父shell查看
1.进入子shell,在内部定义局部变量
2.退出子shell后,回到父shell查看
补充验证:导出为全局变量后可跨shell
1.定义并导出全局变量

1.查看env输出
包含PATH,HOME,ESEER,PWD、自定义export变量等
2.查看printenv输出
和env功能几乎完全一致,仅展示全局环境变量
3.查看set输出
输出范围最大:全局变量+局部自定义变量+shell内置函数+shell参数
4.父shell查看$PWD
5.子shell查看 $PWD

1.父shell先定义全局变量
2.进入子shell查看父shell全局变量
3.在子shell中删除该全局环境变量
4.退出子shell,查看父shell变量
5.在父shell中删除全局变量
6.查看父shell变量值

1.创建shell脚本文件test.sh
2.直接尝试运行文件
3.临时设置PATH环境变量,再次运行
4.重启系统后再次执行
重启后再次运行失败
1.父shell定义变量,export导出全局
2.进入子shell查看变量
3.子shell给变量赋新值
4.字shell再次export导出并查看
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)