环境变量是 Shell 脚本和 Linux 操作中不可或缺的一环。无论是系统启动、软件运行,还是日常命令执行,它们都在背后“默默工作”。本节将带你全面掌握环境变量的使用方式和实战技巧。下面操作以ubuntu为例。
一、什么是环境变量?
环境变量是系统级的变量,它们影响 Shell 的行为和正在运行的进程。
- 类似于“操作系统的全局设置”。
- 用于保存如路径信息、用户名、语言设置、历史记录等。
二、设置环境变量:export 命令
基本语法
export 变量名=值
配置 Java 环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
这个变量将被所有子 Shell 继承。
👆 这个命令将 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/bin 目录添加到 PATH 环境变量中。
小提示
- 用
export设置的变量对当前 shell 和子 shell有效。 - 若只使用
变量名=值,则仅在当前 shell 有效,子进程无法继承。
三、查看环境变量
方式一:使用 echo
#查看 PATH 环境变量
echo $PATH
#查看当前登录用户的主目录
echo $HOME
方式二:使用 env 或 printenv
env
printenv
默认显示所有当前 shell 的环境变量,内容太多不截图说明了,自己可以看一下
方式三:set(显示所有变量,包括函数和 shell 局部变量)
set
四、删除环境变量:unset
基本语法
unset 变量名
变量将从当前 shell 中被移除。
📌 注意:unset 不能删除只读变量(如 PATH、HOME)。
五、常见系统环境变量及其作用
| 变量名 | 作用说明 | 示例 |
|---|---|---|
PATH | 系统查找可执行命令的路径 | /usr/local/bin:/usr/bin:/bin |
HOME | 当前用户的主目录路径 | /home/username |
USER | 当前用户名 | root |
SHELL | 当前使用的 shell 路径 | /bin/bash |
LANG | 当前语言编码 | zh_CN.UTF-8 |
PWD | 当前工作目录 | /home/user/project |
OLDPWD | 上一个工作目录 | /home/user |
HOSTNAME | 主机名 | ubuntu-server |
EDITOR | 默认文本编辑器 | vim |
HISTSIZE | 历史命令条数 | 1000 |
六、环境变量与 Shell 脚本的结合
示例脚本一:动态设置变量并使用
#!/bin/bash
export LOG_DIR="/var/log/myapp"
mkdir -p $LOG_DIR
echo "日志目录已创建在:$LOG_DIR"
再说一次这里设置 $LOG_DIR 变量只对当前 shell 和子 shell 有效
执行上述脚本,你会发现 echo $LOG_DIR啥也没有输出,因为终端执行的shell是当前脚本的父 shell,所以不生效

使用source命令临时的在当前 Shell 会话中生效,关闭终端后失效

unset 删除变量也是这个原理

现在是不是明白了许多呢!!!😂
示例脚本二:根据用户切换不同配置
判断当前用户是否为 root,分别设置了一个环境变量 CONFIG_PATH,指向不同的配置文件路径,便于程序根据用户身份加载对应的配置
#!/bin/bash
if [ "$USER" = "root" ]; then
export CONFIG_PATH="/etc/myapp/config_root"
else
export CONFIG_PATH="$HOME/.myapp/config"
fi
# 自动创建配置目录
mkdir -p "$(dirname "$CONFIG_PATH")"
echo "配置文件路径为:$CONFIG_PATH"
切换不同的用户来测试

七、环境变量使用中的注意事项
| 注意事项 | 说明 |
|---|---|
$ 是引用变量的标志 | 使用 $VAR 来读取变量值 |
export 会让变量在子进程中有效 | 不使用 export 的变量无法被脚本继承 |
| 环境变量对系统行为影响巨大 | 修改 PATH 可能导致命令无法执行 |
| 写脚本时尽量不要硬编码路径 | 使用变量更灵活、可复用性更强 |
| 环境变量区分大小写 | PATH ≠ path |
八、什么时候需要用环境变量?
✅ 常见使用场景如下:
| 场景 | 用法 |
|---|---|
| 修改默认命令路径 | 修改 PATH 变量 |
| 自动化脚本配置参数 | 脚本读取环境变量作为输入 |
| 用户个性化配置 | ~/.bashrc 或 ~/.profile 中设置变量 |
| 软件安装后增加新路径 | 添加到 PATH 中 |
| Dockerfile 或 CI/CD 中传递变量 | 使用 ENV 或 export |
九、与配置文件的关系
常见环境变量配置文件:
| 文件 | 生效范围 | 说明 |
|---|---|---|
~/.bashrc | 当前用户,每次启动 shell 时 | 适合 export 一些临时变量 |
~/.profile / ~/.bash_profile | 当前用户登录时生效 | 适合设置用户级变量 |
/etc/profile | 所有用户登录 shell 时生效 | 系统级变量配置文件 |
/etc/environment | 全局环境变量配置文件 | 不支持复杂语法,适合写静态变量 |
关键点
- 环境变量通过
export设置,用unset删除。 - 变量作用范围依赖于是否使用了
export。 - 在脚本中使用变量比硬编码路径更灵活。
- 合理设置
PATH可以提高开发效率,避免执行失败。 - 常见环境变量如
PATH、HOME、USER非常重要,了解其意义有助于系统调试与自动化开发。
如果你看到这里,说明你真的很认真地在学习 Linux Shell 编程👏。
本系列内容将持续更新,包括脚本实战、渗透自动化、系统管理技巧等干货,适合:
- ✅ Linux 初学者
- ✅ 运维 / 安全从业者
- ✅ 编程爱好者与脚本自动化爱好者
33万+

被折叠的 条评论
为什么被折叠?



