“Ubuntu 环境变量(env)无法生效”是一个比较常见但原因多样的问题。下面我按常见原因 → 排查方法 → 解决方式给你梳理一下。
不同 shell 加载的文件不同:
| Shell | 登录 shell | 非登录 shell |
|---|---|---|
| bash | ~/.bash_profile / ~/.profile |
~/.bashrc |
| zsh | ~/.zprofile |
~/.zshrc |
❌ 常见错误:
.bashrc 里设了 env,但用的是登录 shell.profile 里设了 env,但开的是终端(非登录)✅ 建议:
echo $SHELL
如果是 bash:
# 登录环境
~/.profile
# 终端环境
~/.bashrc
修改 env 后:
source ~/.bashrc
# 或
source ~/.profile
或 完全退出终端重新登录
❌ 错误:
MY_VAR=123
✅ 正确:
export MY_VAR=123
否则 子进程读不到
./set_env.sh
这种方式 不会影响当前 shell
✅ 正确方式:
source set_env.sh
~/.bashrc
~/.profile
/etc/environment # 不支持 export
/etc/profile
/etc/profile.d/*.sh
⚠️ /etc/environment 里不能写 export
sudo echo $PATH
❌ sudo 默认会 重置环境变量
✅ 解决:
sudo -E command
或
sudo env VAR=value command
如果是服务:
systemctl --user show-environment
解决:
systemctl --user set-environment KEY=value
echo $VAR
env | grep VAR
which your_command
bash -lc 'echo $VAR'
你可以告诉我:
我可以直接帮你指出是哪一步出了问题。