一、什么是环境变量1. 基础概念环境变量是操作系统 / Shell 提供的键值对变量名值用于存储会话、系统配置信息程序、脚本可直接读取使用。作用在内存持久存储数据方便 Shell、应用程序调用。命名规范系统自带环境变量全大写自定义局部变量建议小写避免覆盖系统变量。2. 两类环境变量1全局环境变量作用范围当前 Shell 所有子 Shell 都能访问。查看命令env/printenv只打印全局环境变量echo $变量名单独查看某一个变量值必须加$示例1.分别执行env、printenv、set对比输出差异envenv只输出全局环境变量export 导出的变量、系统全局变量格式变量名值不输出函数、局部自定义变量、Shell 内置临时变量printenv功能和env几乎完全一致同样只打印全局环境变量额外用法可单独查询单个变量printenv HOME输出内容、行数和 env 几乎无差别set输出全部内容全局变量 局部自定义变量 Shell 函数 Shell 内置临时变量输出内容远多于 env/printenv行数最多会打印你当前会话定义的局部变量、脚本函数等临时内容2.父 Shell 查看 $PWD进入子 Shell 再次查看验证全局变量继承。二、自定义用户变量1. 创建局部变量仅当前 Shell 生效语法规则变量名值等号两侧不能有空格值包含空格时用单 / 双引号包裹子 Shell 无法读取局部变量退出终端变量直接消失。 示例练习父 shell 定义局部变量进子 shell 查看子 shell 定义局部变量退出后父 shell 查看均无法读取。2. 创建全局变量子 Shell 也可访问步骤先定义局部变量 →export导出为全局my_var全局变量测试 export my_var bash # 进入子shell echo $my_var # 子shell可读取 my_var修改值 # 子shell修改变量 exit echo $my_var # 父shell值不变子shell修改不影响父shell核心特点子 Shell 修改全局变量仅在自身内部生效不会向上覆盖父 Shell 的变量值。三、删除环境变量命令unset 变量名注意操作变量时 ** 不加 $**读取变量时才加 $。 示例流程父 shell 导出全局变量export test123进入子 shellunset test子 shell 中变量消失exit 退回父 shell变量依然存在父 shell 执行unset test变量彻底删除练习步骤子 shell 读取父 shell 全局变量子 shell unset 删除变量退出子 shell父 shell 变量仍存在父 shell 执行 unset变量彻底清除四、系统默认 Shell 环境变量1. 传统 Bourne 内置变量表格变量作用CDPATHcd 命令的搜索目录冒号分隔HOME当前用户家目录IFS字段分隔符MAIL用户邮箱文件路径MAILPATH多邮箱文件列表OPTARG / OPTINDgetopts 命令专用参数2. Bash 独有扩展变量表格变量作用BASH当前 bash 程序完整路径PWD当前工作目录UID用户数字 IDHOSTNAME主机名LINES终端可见行数GROUPS当前用户所属用户组数组五、PATH 环境变量重点1. 作用Shell 输入命令时自动在 PATH 内的目录查找可执行程序目录用冒号:分隔。 查看 PATH2. 临时添加自定义目录如果脚本所在目录不在 PATH无法直接运行可临时追加目录⚠️ 缺点临时生效重启终端 / 系统后失效。配套练习编写hello.sh脚本不修改 PATH直接运行提示命令不存在追加目录到 PATH 后可直接运行重启终端再次执行脚本失效权限不足时添加执行权限chmod ux hello.sh六、环境变量配置文件永久生效配置登录 Shell 启动时会按固定顺序读取配置文件写入变量可永久生效。1. 系统级全局配置所有用户生效/etc/profile系统所有用户登录都会加载内部会循环加载/etc/profile.d/*.sh下所有脚本适合配置全用户共用环境变量。2. 用户级专属配置仅当前用户生效登录时按优先级依次查找找到第一个就停止读取~/.bash_profile~/.bash_login~/.profile上述文件内部一般会主动加载~/.bashrc终端交互配置。使用技巧把自定义环境变量、PATH 配置写入上述文件新开终端自动生效 立即生效不用重启source 配置文件七、数组变量环境变量支持数组可存储多个值下标从 0 开始。1. 数组定义与读取2. 修改、删除数组数组练习创建存储组员姓名的数组修改其中一位成员删除一名成员彻底删除整个数组。本章小结Linux 环境变量分为全局变量父子 shell 共享、局部变量仅当前 shellexport将局部变量提升为全局unset删除变量PATH 控制命令搜索路径临时修改重启失效写入配置文件永久生效Shell 登录时自动加载/etc/profile、用户家目录下.bash_profile/.profile等配置文件环境变量支持数组通过下标存取多组数据。