在linux脚本中使用环境变量需区分读取与设置:可直接引用父shell传入的变量(如$user);新变量须用export导出才对子进程生效;修改path应追加而非覆盖;建议检查变量是否存在并提供默认值以增强健壮性。

在 Linux 脚本中使用环境变量很简单,关键是要分清“读取”和“设置”两种场景,以及变量是否已导出为环境变量。
直接引用已有的环境变量
脚本默认能读取父 shell 传入的所有环境变量(如 PATH、HOME、USER),无需额外操作,直接用 $VARNAME 或 ${VARNAME} 引用即可:
echo "当前用户:$USER"cd $HOME/Documents-
ls -l ${HOME}/.config(花括号更安全,尤其变量名后紧跟字母或符号时)
在脚本里定义并导出新环境变量
如果脚本需要让后续启动的子进程(比如调用的另一个脚本、命令或程序)也能用某个变量,必须用 export 导出:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
-
MY_APP_DIR="/opt/myapp"(只是普通变量,子进程看不到) -
export MY_APP_DIR(导出后,该脚本 spawn 的所有子进程都能读取) - 或者一步写成:
export MY_APP_DIR="/opt/myapp"
注意:导出的变量只对当前脚本及其子进程有效,不会影响父 shell 或其他终端会话。
修改 PATH 等关键变量要小心追加
向 PATH 添加自定义路径时,务必保留原有值,避免覆盖系统路径导致命令失效:
- ✅ 正确(追加):
export PATH="$PATH:/my/tool/bin" - ❌ 错误(覆盖):
export PATH="/my/tool/bin"(这会让ls、cp等系统命令找不到)
检查变量是否存在或为空再使用
增强脚本健壮性,避免因变量未设置导致错误:
- 判断是否为空:
if [ -z "$JAVA_HOME" ]; then echo "JAVA_HOME 未设置"; exit 1; fi - 提供默认值:
LOG_DIR=${LOG_DIR:-/tmp/logs}(如果LOG_DIR为空或未定义,就用/tmp/logs) - 确保是绝对路径:
[ -d "$MY_APP_DIR" ] || { echo "目录不存在"; exit 1; }










