在 Debian 里“修改 env(环境变量)”要分改哪里、给谁用、是否永久生效。下面按最常见场景给你一套速查表。
关闭终端就失效
export VAR_NAME=value
示例:
export PATH=/usr/local/bin:$PATH
查看:
echo $VAR_NAME
env | grep VAR_NAME
~/.bashrc(交互式 shell)nano ~/.bashrc
添加:
export JAVA_HOME=/usr/lib/jvm/java-17
export PATH=$JAVA_HOME/bin:$PATH
生效:
source ~/.bashrc
~/.bash_profile 或 ~/.profile(登录 shell)适合 登录时生效(如 SSH 登录)
nano ~/.bash_profile
或:
nano ~/.profile
添加:
export PATH=$PATH:/opt/myapp/bin
sudo nano /etc/profile.d/myenv.sh
内容:
export GLOBAL_VAR=hello
export PATH=$PATH:/opt/app/bin
赋予执行权限(可选):
sudo chmod +x /etc/profile.d/myenv.sh
重新登录即可生效 ✅
/etc/profile
/etc/environment
⚠️ /etc/environment 不能写 export
PATH="/usr/local/bin:/usr/bin:/bin"
sudo systemctl edit myservice
写入:
[Service]
Environment="VAR_NAME=value"
重载:
sudo systemctl daemon-reload
sudo systemctl restart myservice
VAR=value command
示例:
JAVA_HOME=/usr/lib/jvm/java-17 java -version
printenv VAR_NAME
env
| 问题 | 说明 |
|---|---|
在 .bashrc 不设变量但 crontab 用不了 |
cron 不走 .bashrc |
systemd 读不到 ~/.bashrc |
systemd 不加载 shell |
| PATH 被覆盖 | 用 PATH=/new:$PATH |
export~/.bashrc/etc/profile.d/systemctl edit如果你能具体说:
我可以直接给你一条最合适的命令 ✅