Linux Shell局部变量与环境变量深度实操
一、前言
Shell 变量是 Linux 运维、脚本开发的核心基础。很多初学者分不清局部变量 和 环境变量 的区别,也不清楚父子 Shell 之间变量的传递规则、变量永久配置方法、PATH 作用、数组用法。
本文通过完整可复现的 Xshell 实验,从零讲透 Shell 所有常用变量机制,所有命令均可直接复制运行。
二、Shell 变量整体知识体系
Shell 变量主要分为两大类:局部变量与全局环境变量。除此之外还有系统内置环境变量、永久环境变量、数组变量,构成完整的 Shell 变量体系。
所有变量行为都遵循一个核心机制:子 Shell 是独立进程,变量默认不共享,仅环境变量可被复制继承。
三、局部变量详解(临时、不继承)
- 定义规则
直接使用 变量名=值 定义的变量就是局部变量。
重点语法:等号两边绝对不能加空格,带空格字符串必须加引号。 - 局部变量特点
仅当前终端 Shell 有效,子 Shell 无法读取。子 Shell 中定义的局部变量退出后直接消失,父 Shell 完全看不到。关闭终端后所有局部变量自动销毁。 - 实验:父子 Shell 局部变量验证
父Shell定义局部变量
local_test=“我是局部变量”
echo $local_test
进入子Shell
bash
子Shell无法读取局部变量
echo $local_test
退出子Shell
exit
父Shell变量仍然存在
echo $local_test
实验结论:局部变量不支持父子进程传递,仅当前 Shell 自己使用。
四、环境变量详解(export 全局变量)
- 作用
使用 export 可以将局部变量升级为环境变量,可以被子 Shell 继承,是 Shell 跨进程传递变量的唯一方式。 - 重要核心原理
环境变量的继承是 复制机制,不是共享机制。父 Shell 的环境变量会复制一份到子 Shell,子 Shell 修改变量只会修改自己的副本,无法反向修改父 Shell。 - 实验:export 环境变量完整流程
父Shell定义并导出环境变量
env_test=“父Shell的环境变量”
export env_test
echo $env_test
进入子Shell
bash
子Shell可以正常继承读取
echo $env_test
子Shell修改变量
env_test=“子Shell修改的值”
export env_test
echo $env_test
退回父Shell
exit
父Shell值完全不变
echo $env_test
实验结论:子 Shell 无论怎么修改、重新 export,都不会影响父 Shell。
五、永久环境变量配置(~/.bashrc)
- 作用说明
临时 export 的变量关闭终端就失效。如果需要永久生效,需要写入用户 Shell 配置文件 ~/.bashrc。
终端启动时会自动加载该文件内的所有变量、别名、PATH 配置。 - 实操配置永久变量
编辑配置文件
vim ~/.bashrc
在文件末尾添加
export MY_PERM_VAR=“永久环境变量测试”
刷新配置,立即生效
source ~/.bashrc
任意终端均可读取
echo $MY_PERM_VAR
六、系统核心环境变量 PATH
- PATH 作用
PATH 是系统最重要的内置环境变量,定义了命令搜索目录。执行命令时,系统会依次在 PATH 的目录中查找可执行文件。
如果自己写的脚本不在 PATH 目录中,必须写绝对路径才能执行;加入 PATH 后可以直接运行。 - 实操:临时追加 PATH
查看当前PATH
echo $PATH
自定义目录加入PATH(临时生效)
export PATH=PATH:/home/user/myscript3.永久追加PATH将exportPATH=PATH:/home/user/myscript 3. 永久追加 PATH 将 export PATH=PATH:/home/user/myscript3.永久追加PATH将exportPATH=PATH:自定义路径 写入 ~/.bashrc,source 刷新即可永久生效。
七、Shell 数组变量(常用运维技巧)
数组可以一次性存储多个数据,适合批量操作文件、日志、服务等场景。
完整实操代码
定义数组
arr=(“Linux” “Shell” “Variable”)
读取单个元素
echo ${arr[0]}
读取所有元素
echo ${arr[@]}
获取数组长度
echo ${#arr[@]}
遍历数组
for item in ${arr[@]}
do
echo $item
done
八、核心知识点总结
- 局部变量
仅当前 Shell 有效,子 Shell 无法继承,终端关闭立即失效。 - 环境变量 export
可被子 Shell 继承,子 Shell 修改仅影响自身,不回传父 Shell。 - 永久变量 .bashrc
写入配置文件并 source 刷新,所有终端永久生效。 - PATH 变量
决定命令搜索路径,是自定义脚本快捷执行的关键。 - 数组变量
批量存储数据,常用于 Shell 脚本循环处理任务。
九、结语
局部变量、环境变量、永久配置、PATH、数组构成了 Shell 变量的全部核心内容,也是 Linux 运维和 Shell 脚本开发的基础。掌握父子 Shell 变量隔离机制,能够彻底理解变量生效范围、脚本执行环境、终端配置原理。