Linux Shell局部变量与环境变量深度实操


一、前言
Shell 变量是 Linux 运维、脚本开发的核心基础。很多初学者分不清局部变量 和 环境变量 的区别,也不清楚父子 Shell 之间变量的传递规则、变量永久配置方法、PATH 作用、数组用法。
本文通过完整可复现的 Xshell 实验,从零讲透 Shell 所有常用变量机制,所有命令均可直接复制运行。
二、Shell 变量整体知识体系
Shell 变量主要分为两大类:局部变量与全局环境变量。除此之外还有系统内置环境变量、永久环境变量、数组变量,构成完整的 Shell 变量体系。
所有变量行为都遵循一个核心机制:子 Shell 是独立进程,变量默认不共享,仅环境变量可被复制继承。
三、局部变量详解(临时、不继承)

  1. 定义规则
    直接使用 变量名=值 定义的变量就是局部变量。
    重点语法:等号两边绝对不能加空格,带空格字符串必须加引号。
  2. 局部变量特点
    仅当前终端 Shell 有效,子 Shell 无法读取。子 Shell 中定义的局部变量退出后直接消失,父 Shell 完全看不到。关闭终端后所有局部变量自动销毁。
  3. 实验:父子 Shell 局部变量验证

父Shell定义局部变量

local_test=“我是局部变量”
echo $local_test

进入子Shell

bash

子Shell无法读取局部变量

echo $local_test

退出子Shell

exit

父Shell变量仍然存在

echo $local_test
实验结论:局部变量不支持父子进程传递,仅当前 Shell 自己使用。
四、环境变量详解(export 全局变量)

  1. 作用
    使用 export 可以将局部变量升级为环境变量,可以被子 Shell 继承,是 Shell 跨进程传递变量的唯一方式。
  2. 重要核心原理
    环境变量的继承是 复制机制,不是共享机制。父 Shell 的环境变量会复制一份到子 Shell,子 Shell 修改变量只会修改自己的副本,无法反向修改父 Shell。
  3. 实验: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)

  1. 作用说明
    临时 export 的变量关闭终端就失效。如果需要永久生效,需要写入用户 Shell 配置文件 ~/.bashrc。
    终端启动时会自动加载该文件内的所有变量、别名、PATH 配置。
  2. 实操配置永久变量

编辑配置文件

vim ~/.bashrc

在文件末尾添加

export MY_PERM_VAR=“永久环境变量测试”

刷新配置,立即生效

source ~/.bashrc

任意终端均可读取

echo $MY_PERM_VAR
六、系统核心环境变量 PATH

  1. PATH 作用
    PATH 是系统最重要的内置环境变量,定义了命令搜索目录。执行命令时,系统会依次在 PATH 的目录中查找可执行文件。
    如果自己写的脚本不在 PATH 目录中,必须写绝对路径才能执行;加入 PATH 后可以直接运行。
  2. 实操:临时追加 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.永久追加PATHexportPATH=PATH:自定义路径 写入 ~/.bashrc,source 刷新即可永久生效。
七、Shell 数组变量(常用运维技巧)
数组可以一次性存储多个数据,适合批量操作文件、日志、服务等场景。
完整实操代码

定义数组

arr=(“Linux” “Shell” “Variable”)

读取单个元素

echo ${arr[0]}

读取所有元素

echo ${arr[@]}

获取数组长度

echo ${#arr[@]}

遍历数组

for item in ${arr[@]}
do
echo $item
done
八、核心知识点总结

  1. 局部变量
    仅当前 Shell 有效,子 Shell 无法继承,终端关闭立即失效。
  2. 环境变量 export
    可被子 Shell 继承,子 Shell 修改仅影响自身,不回传父 Shell。
  3. 永久变量 .bashrc
    写入配置文件并 source 刷新,所有终端永久生效。
  4. PATH 变量
    决定命令搜索路径,是自定义脚本快捷执行的关键。
  5. 数组变量
    批量存储数据,常用于 Shell 脚本循环处理任务。
    九、结语
    局部变量、环境变量、永久配置、PATH、数组构成了 Shell 变量的全部核心内容,也是 Linux 运维和 Shell 脚本开发的基础。掌握父子 Shell 变量隔离机制,能够彻底理解变量生效范围、脚本执行环境、终端配置原理。