Linux环境变量管理需分清作用域、生命周期和加载时机:临时用export,用户级永久配置写入~/.bashrc或~/.zshrc,系统级推荐/etc/profile.d/下新建脚本,注意PATH追加防覆盖、引号包裹空格路径、大小写敏感及systemd服务需显式声明。
Linux 服务器环境变量管理,核心是分清作用域、生命周期和加载时机,再选对配置位置。临时调试用 export,长期生效按用户或系统范围写入对应文件,避免硬编码路径、重复追加 PATH 或忽略 shell 类型差异。
只在当前终端会话有效,关闭即失效,适合测试或单次运行:
export MY_APP_HOME="/opt/myapp"
export PATH="$PATH:$MY_APP_HOME/bin"
echo $MY_APP_HOME 或 printenv MY_APP_HOME
unset MY_APP_HOME
适用于开发账户、运维账号等个性化设置,推荐写入 shell 初始化文件:
~/.bashrc(交互式非登录 Shell)或 ~/.bash_profile(登录 Shell),末尾添加:
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
~/.zshrc,内容格式相同source ~/.bashrc(或对应文件)~/.bashrc 不被远程 SSH 登录默认加载,如需登录即生效,可将 export 行移到 ~/.bash_profile 并在其中 source ~/.bashrc
适合全局工具路径、语言设置、安全策略等,需 root 权限:
/etc/profile.d/ 下新建脚本,如 /etc/profile.d/mytools.sh,内容直接写:
export PATH="/opt/tools/bin:$PATH"
export LANG="zh_CN.UTF-8"
新终端自动加载,无需修改主配置文件
/etc/environment(纯键值对,不支持 $ 展开或逻辑判断):
DB_HOST=192.168.1.100
API_TIMEOUT=30
/etc/profile,适合需要条件判断或函数定义的场景,但改动影响大,慎用配置容易,生效难——常因细节出错导致变量“设了却没用”:
$PATH 原值,写成 export PATH="/new/path" 会清空原有路径,导致 ls、cd 等命令失效export DATA_DIR="/home/user/My Files"
path 和 PATH 是两个不同变量Environment="JAVA_HOME=/usr/lib/jvm/java-17" 或 EnvironmentFile=/etc/profile.d/myapp.sh
env | grep -i "my_app|java",或在新终端中运行 printenv MY_APP_HOME