Linux Shell 环境变量全解|局部 / 全局变量、PATH 配置、开机自启与数组实操标签

📅 2026/7/7 11:31:11
Linux Shell 环境变量全解|局部 / 全局变量、PATH 配置、开机自启与数组实操标签
一、基础概念什么是 Linux 环境变量环境变量由变量名值键值对构成系统内置变量统一大写自定义变量推荐小写避免覆盖系统变量。bash 中将环境变量分为两类1、全局环境变量对当前 Shell 及所有子 Shell 生效子 Shell 修改不会反向影响父 Shell可通过env/printenv查看。2、局部环境变量仅当前创建 Shell 进程可见子 Shell 无法读取set命令可查看全部变量全局 局部 自定义。读取变量语法$变量名单独打印变量用echo $变量名操作变量删除 / 赋值不加$。二、实操练习一查看、区分全局与局部变量练习任务1、执行env、printenv、set对比输出差异1执行env(2)执行printenv3执行set没有截完整非常多差异env、printenv输出很短只有系统自带全局变量比如 HOME、PATH、PWDset输出巨长不仅有系统变量还有你当前窗口临时创建的所有局部变量还会自动排序2、父 Shell 查看$PWD进入子 Shellbash再次查看$PWD实验结论1、env/printenv仅输出全局环境变量set输出当前 Shell 所有变量全局 局部 自定义并按字母排序。2、PWD是全局变量父、子 Shell 中读取值完全一致子 Shell 可继承全局变量。四、实操练习二自定义局部变量 全局变量1. 局部变量实操练习练习任务1父 Shell 定义局部变量进入子 Shell 查看2子 Shell 定义局部变量退出回到父 Shell 查看操作命令示例# 父Shell定义局部变量带空格字符串加单引号 my_varLinux Test echo $my_var # 进入子shell bash # 子shell读取 echo $my_var # 子shell新建局部变量 child_var子shell变量 exit # 回到父shell读取child_var echo $child_var1父窗口创建局部变量2进入子shell3子 shell 新建自己的局部变量4退出子 shell 回到父窗口实验结论局部变量仅当前 Shell 生效子 Shell 无法读取父 Shell 局部变量子 Shell 定义的局部变量退出后直接销毁父 Shell 不可见。赋值规范变量值等号两侧不能有空格带空格字符串必须单 / 双引号包裹。2. 全局变量export 导出实操练习练习任务1、父 Shell 定义变量export导出为全局2、子 Shell 读取变量3、子 Shell 修改变量值重新 export4、退出子 Shell父 Shell 查看原值操作命令示例# 父shell创建并导出全局变量 global_var全局测试 export global_var # 进入子shell bash echo $global_var # 子shell修改值并重新导出 global_var子shell修改值 export global_var echo $global_var exit # 父shell再次查看 echo $global_var1、父窗口创建 导出全局变量2、进入子shell3、子 shell 修改变量重新导出4、退出子 shell回到父窗口实验结论1、export可将局部变量升级为全局子 Shell 可继承2、子 Shell 内修改、重新 export 变量仅作用于子 Shell 自身父 Shell 变量值不会改变父子 Shell 全局变量相互隔离。五、实操练习三unset 删除环境变量练习任务1、子 Shell 读取父 Shell 全局变量2、子 Shell 执行 unset 删除变量3、退出子 Shell父 Shell 查看变量4、父 Shell 执行 unset 彻底删除变量操作命令实例1、沿用上面的 global_test 全局变量进入子 shellbash echo $global_test # 能读到值 # 删除变量不加$ unset global_test echo $global_test # 子窗口里空白读不到了2、退出子 shellexit echo $global_test # 父窗口变量还在没消失3.在父窗口执行删除实验结论子 Shell 中 unset 仅删除子 Shell 内副本父 Shell 全局变量不受影响只有在父 Shell 执行 unset才会彻底删除该全局变量。六、实操练习四PATH 环境变量配置临时生效PATH 存储系统命令搜索目录目录用冒号:分隔Shell 执行外部命令时按 PATH 顺序查找程序。练习任务1、新建hello.sh脚本赋予执行权限chmod ux hello.sh2、直接执行脚本提示 command not found3、将脚本目录追加至 PATHPATH$PATH:/脚本目录4、任意目录直接运行脚本重启终端后再次测试分布操作1、创建脚本并写入内容vim hello.sh # 文件里写入 #!/bin/bash echo hello,world!保存退出后给脚本执行权限2、直接输入文件名运行hello.sh实验结论PATH 临时修改仅当前 Shell 会话生效关闭终端 / 重启系统后失效将脚本目录追加到 PATH 后可在任意路径直接执行脚本文件无需写完整绝对路径。七、实操练习五永久环境变量登录启动文件登录 Shell 启动时会按固定顺序读取环境配置文件实现变量永久生效1. 系统全局配置所有用户生效/etc/profile系统公共配置所有用户登录都会加载/etc/profile.d/下放.sh 脚本开机自动执行。2. 用户私有配置只自己生效读取顺序找到第一个就不读后面.bash_profile→.bash_login→.profile这些文件都会自动加载.bashrc日常自定义 PATH、变量直接写进~/.bashrc最方便。立即生效命令不用重启终端source ~/.bashrc八、实操练习六Shell 数组变量数组可存储多个值下标从 0 开始${数组[下标]}读取单个元素${数组[*]}读取全部元素。练习任务创建存储组员姓名的数组修改指定下标成员值删除单个数组元素删除整个数组操作示例# 1. 创建数组 names(张三 李四 王五) # 读取全部元素 echo ${names[*]} # 2. 修改第二个元素下标1 names[1]小李 # 3. 删除单个元素 unset names[2] # 4. 删除整个数组 unset names1、创建数组括号空格隔开内容2、修改第二个元素下标从 0 开始第二个是下标 13、删除单个元素只会删掉小刚数组还存在位置空出来。4、删除整个数组实验结论unset 数组[下标]仅删除对应元素数组结构保留下标空缺unset 数组名直接销毁整个数组。九、笔记Linux 环境变量分为全局变量export 导出子 Shell 可继承、局部变量仅当前 Shell 可用env/printenv看全局set看全部变量。自定义变量规范小写命名赋值变量值无空格含空格字符串用引号包裹unset 变量名删除变量读取加$。PATH 控制命令搜索路径临时修改仅当前会话有效写入/etc/profile或~/.bashrc实现永久配置。Shell 登录时按固定顺序读取系统 / 用户启动文件可实现环境变量开机自动加载。Bash 支持数组变量下标从零起始可单独增删元素或整体销毁数组。