Linux环境变量课程内容完整总结
一、环境变量基础概念
- 定义
环境变量是变量名=值格式的键值对,由操作系统/Shell维护,用于存储会话、系统、用户环境信息,脚本与程序可快速读取使用;bash依靠环境变量保存工作环境数据。系统环境变量规范全大写,自定义局部变量建议小写避免覆盖系统变量。 - bash内置默认环境变量
分为Bourne原生变量、bash扩展自有变量两类,核心常用变量:
| 变量 | 作用 |
|------|------|
| HOME | 当前用户家目录 |
| PATH | 命令搜索目录,多路径用:分隔 |
| PWD | 当前工作目录 |
| PS1/PS2 | 主、次命令行提示符 |
| IFS | 文本分割字段符号 |
| RANDOM | 生成0~32767随机数 |
| UID/EUID | 用户真实ID、有效ID |
| SHELL | 当前Shell程序路径 |
二、环境变量分类:全局变量 & 局部变量
1. 全局环境变量
- 作用域:当前Shell会话+所有子Shell均可访问,子Shell会继承父Shell全局变量;子Shell修改变量仅自身生效,不影响父Shell。
- 查看命令:
env/printenv:只查看全局环境变量;echo $变量名:单独打印某个变量值,引用变量必须加$。
2. 局部环境变量
- 作用域:仅定义它的当前Shell可见,子Shell无法读取。
- 查看命令:
set,输出包含局部、全局、自定义所有变量,自动字母排序。
3. 变量创建规则
- 赋值时
变量=值,等号两侧不能有空格; - 值含空格需用单/双引号包裹,如
var='hello world'; - 重复赋值会直接覆盖原有值。
三、自定义变量操作(增、导出、删、永久生效)
1. 创建局部变量
直接赋值:test=123,仅当前终端可用,子Shell读取为空。
2. 转为全局变量(export)
- 两步法:先定义局部变量,再
export 变量名; - 一步法:
export test="全局变量"; - 特性:子Shell可读取;子Shell内修改该变量,退出后父Shell原值不变。
3. 删除变量 unset
- 语法:
unset 变量名,操作变量不加$;读取变量才加$; - 特性:子Shell删除仅对子Shell生效,父Shell变量不受影响;临时变量关闭终端直接消失。
4. 变量永久生效(写入配置文件)
临时定义的变量重启Shell/系统会丢失,持久化配置步骤:
- 编辑用户配置文件:
vim ~/.bashrc; - 文件末尾添加
export 变量=值; - 重载配置立即生效:
source ~/.bashrc;
原理:每次登录启动bash会自动读取.bashrc执行内部命令。
四、PATH环境变量(命令搜索路径)
- 作用:Shell输入命令时,按PATH内目录顺序查找可执行程序,目录间用冒号
:分隔;系统自带软件路径默认已写入PATH,可直接输入命令执行。
五、存储环境变量的系统/用户配置文件
登录Shell会依次读取多份启动文件,分为系统级、用户级两类:
- 系统全局文件(所有用户生效)
/etc/profile:系统主启动文件,所有用户登录自动执行;内部会加载/etc/bash.bashrc,并遍历/etc/profile.d/*.sh脚本;
- 用户私有隐藏文件(仅当前用户生效,家目录下)
~/.bash_profile/~/.bash_login/~/.profile:登录Shell加载;~/.bashrc:交互式Shell必加载,.profile会主动引入该文件,自定义环境变量首选此文件;- 文件均为
.开头隐藏文件,ls -a可查看。
六、Bash数组变量
- 基础特性:仅支持一维数组,存储多个值;括号
()定义,元素空格分隔;下标从0开始。 - 基础语法
- 定义:
arr=(one two three) - 读取单个元素:
${arr[下标]},如${arr[1]}取第二个元素; - 读取全部元素:
${arr[*]}
- 定义:
- 数组修改与删除
- 修改指定下标值:
arr[1]=five; - 删除单个元素:
unset arr[1],仅清空值,下标保留; - 删除整个数组:
unset arr。
- 修改指定下标值:
七、配套练习与课后作业
三大课堂练习题
- 练习1:env/printenv/set对比查看;父子Shell查看$PWD;区分全局、局部变量可见性;
- 练习2:export导出全局变量;子Shell修改变量验证不影响父Shell;
- 练习3:数组创建、修改成员、删除单个元素、删除整个数组。
八、核心小结
- Linux环境变量分全局、局部两类,核心区别是能否被子Shell继承;
- export实现局部变量全局化,unset删除变量;临时变量写入
.bashrc实现永久生效; - PATH决定系统命令检索路径,可手动追加自定义程序目录;
- bash登录时加载系统+用户多层配置文件,统一初始化环境变量;
- bash支持一维数组,可批量存储、修改、删除多组数据。