“Debian 的 env 不生效”这个问题比较常见,但原因可能有很多种,我先给你一个最常见原因清单,你对照一下,基本都能定位。
export MY_VAR=123
这样只对当前 shell 有效,关闭终端就消失。
✅ 正确做法(持久化):
echo 'export MY_VAR=123' >> ~/.bashrc
source ~/.bashrc
⚠️ 注意:
/root/.bashrcDebian 默认:
.bashrc → 交互式 shell.profile / .bash_profile → 登录 shellcron / systemd / ssh 执行命令时经常不加载 .bashrc
✅ 推荐放这里(最稳妥):
~/.profile
/etc/environment
/etc/environment,但语法错误❌ 错误写法(这是 shell 语法,不对):
export MY_VAR=123
✅ 正确写法(纯 KEY=VALUE):
MY_VAR=123
/etc/environment不是 shell 脚本
systemd 不会读取 .bashrc / .profile
✅ 正确方式:
[Service]
Environment=MY_VAR=123
或:
EnvironmentFile=/etc/myenv.conf
sudo 清掉了环境变量sudo echo $MY_VAR
# 空
✅ 解决方案:
sudo -E command
或:
visudo
# 添加
Defaults env_keep += "MY_VAR"
docker run myimage
# env 没
✅ 正确:
docker run -e MY_VAR=123 myimage
你可以挨个试:
echo $MY_VAR
env | grep MY_VAR
bash -c 'echo $MY_VAR'
sudo bash -c 'echo $MY_VAR'
你可以补充以下信息,我可以直接告诉你改哪个文件、怎么改:
cat /etc/os-release)我可以直接给你精确修改方案。