一、课堂核心知识点总结

  1. 环境变量基础概念

(1) 定义:由 变量名=值 组成,用于在操作系统、Shell、程序间传递环境配置数据,bash中分为全局变量、局部变量两类。
(2) 命名规范:系统内置变量全大写;自定义局部变量建议小写,避免覆盖系统变量;赋值时 变量、=、值 之间不能有空格。
(3)区分全局/局部变量- 全局变量:当前Shell及所有子Shell均可访问, env/printenv 查看; echo $变量名 读取单变量。
局部变量:仅当前创建Shell可用,子Shell无法读取; set 可查看全部变量(全局+局部+自定义)。

2.自定义变量操作

(1)局部变量

直接赋值: 变量=值 ;值含空格需单/双引号包裹;退出Shell后自动失效。

(2)全局变量

先定义局部变量,再用 export 变量 导出为全局;子Shell修改该变量不会同步父Shell原值。

(3)删除变量

unset 变量名 (操作变量不加,读取变量才加);子Shell删除全局变量仅作用于自身,父Shell不受影响。

  1. Shell默认内置环境变量

(1)Bourne基础变量:HOME、IFS、MAIL、CDPATH、提示符PS1/PS2等;
(2)Bash独有变量:BASH、HOSTNAME、LINES、PWD、UID、GROUPS数组等,记录会话、用户、终端信息。

  1. PATH可执行文件搜索路径

(1) 作用:Shell输入命令时,按PATH内冒号分隔的目录依次查找程序;目录不在PATH中则无法直接运行脚本。
(2)临时追加路径: PATH=$PATH:/目标目录 ,仅当前会话生效,重启/重登失效。
(3) 脚本运行前置: chmod u+x 脚本.sh 赋予执行权限。

  1. 环境变量持久化配置文件(登录Shell自动加载)

(1) 系统级(所有用户生效): /etc/profile ,加载 /etc/profile.d/ 下所有.sh脚本;
(2) 用户级(仅当前用户)加载顺序: .bash_profile → .bash_login → .profile ,只会执行第一个存在文件;文件内会自动引入 .bashrc ;
(3) 永久配置变量:将export/PATH修改写入上述启动文件,登录自动生效。

  1. 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导出并查看
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐