当前位置: 首页 > news >正文

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 变量隔离机制,能够彻底理解变量生效范围、脚本执行环境、终端配置原理。
http://www.jsqmd.com/news/1147218/

相关文章:

  • 2026 会议管理系统排名深度解析:会助力凭全链路功能领跑优选榜单
  • Wand-Enhancer完整使用指南:解锁WeMod Pro功能的本地化增强方案
  • 智能会议门牌:解决会议室管理全流程痛点,开启企业数字化办公
  • 计算机毕业设计之基于Web的奶茶销售管理系统
  • STM32与蓝牙5.4模块实现LE Audio音频传输方案
  • WarcraftHelper:魔兽争霸3老玩家的终极救星,告别卡顿黑边烦恼!
  • PIC18F24J50与CMT-8540S-SMT实现嵌入式音频方案
  • 游戏AI集成实战:三角洲部队智能决策系统部署指南
  • BetterJoy终极指南:让你的Switch控制器在PC上完美工作
  • TLA2518 ADC与PIC18F26K80的信号采集系统设计
  • WarcraftHelper:魔兽争霸III兼容性优化终极指南
  • 基于PIC24FJ与压电蜂鸣器的智能警报系统设计
  • PIC32MX470F512L与MCP3428高精度ADC接口设计与优化
  • TC78H651AFNG与PIC18F46K40直流电机驱动方案解析
  • 如何三步掌握Wand-Enhancer完整方案,永久解锁专业版功能
  • BORA:面向接触丰富场景的机器人在线残差自适应控制框架
  • NBM5100A与PIC18F57K42低功耗嵌入式系统设计解析
  • EM3080-W与PIC18F86K90的条码识别系统设计
  • 3步实战指南:用ncmdump轻松解密网易云音乐NCM文件
  • NAU8224与STM32F100ZE构建高效数字音频系统
  • 无月租电话外呼机器人真的靠谱吗?
  • STM32G031K8与ADS127L11高精度ADC信号采集方案
  • STM32F407ZG与LTC1864高精度ADC数据采集系统设计
  • ResNet-50 残差块源码解析:BasicBlock 与 Bottleneck 的 3 处关键差异
  • SQL Server 触发器实战:3种类型(DML/DDL/登录)创建与性能影响分析
  • 《AI搜索时代,内容如果无法被AI“计算”,营销价值就趋近于零——专知智库白皮书如何帮企业构建语义、结构与权威三大信号工程》
  • 过敏调理赛道迎来新探索:牛初乳改善复发性鼻炎效果成大众关注焦点
  • Caspar:基于符号编程的非线性优化GPU编译器
  • MAL-PEG-OPSS 修饰对生物分子水溶性及分散稳定性的影响与优化分析
  • 面向大模型全场景的 SASE 云网安底座技术实现与落地实践