在 Debian(以及大多数 Linux 发行版)中,“持久化 env 变量”取决于作用范围(用户级 / 系统级 / 服务级)和登录方式(login shell / non-login shell)。下面按常见场景说明。
编辑用户家目录下的文件:
nano ~/.bashrc
添加:
export MY_VAR="value"
生效:
source ~/.bashrc
✅ 适合:终端、SSH 登录、图形终端
nano ~/.profile
# 或 ~/.bash_profile(若存在)
添加:
export MY_VAR="value"
✅ 适合:登录 shell(SSH、控制台)
sudo nano /etc/environment
内容(不能写 export):
MY_VAR="value"
✅ 登录后全局生效
❌ 不会被 shell 脚本自动 source(非 shell 语法)
sudo nano /etc/profile
# 或
sudo nano /etc/bash.bashrc
添加:
export MY_VAR="value"
如果你发现:
“我在 bash 里能看到变量,但 systemd 服务里没有”
原因是:systemd 不读 bashrc / profile
sudo systemctl edit my-service
写入:
[Service]
Environment=MY_VAR=value
重新加载:
sudo systemctl daemon-reload
sudo systemctl restart my-service
sudo nano /etc/systemd/system.conf
修改:
DefaultEnvironment=MY_VAR=value
然后:
sudo systemctl daemon-reexec
export MY_VAR="value"
❌ 重启 / 新 shell 失效
echo $MY_VAR
或:
printenv MY_VAR
| 场景 | 正确文件 |
|---|---|
| 普通用户终端 | ~/.bashrc |
| SSH 登录 | ~/.profile |
| 所有用户 | /etc/environment |
| systemd 服务 | systemctl edit |
| cron 任务 | 在 crontab 里写 MY_VAR=value |
如果你能说明:
我可以给你最精确的配置方式。