在 Debian(以及大多数 Linux 发行版)里,“永久设置环境变量”取决于你想对谁生效。下面按“作用范围”从最常见到最系统的方式给你一个完整说明。
~/.bashrc(仅对 bash 交互式 shell 生效)适合:命令行、脚本、开发环境
nano ~/.bashrc
在末尾添加:
export MY_VAR="value"
export PATH=$PATH:/your/path
生效:
source ~/.bashrc
⚠️ 注意:
~/.profile(登录 shell 生效,推荐)适合:登录用户、图形界面、SSH
nano ~/.profile
添加:
export MY_VAR="value"
重新登录或执行:
source ~/.profile
✅ 比 .bashrc 更通用
~/.bash_profile(若存在会优先于 .profile)如果存在:
~/.bash_profile
bash 就不会读 .profile
/etc/environment(最简单、最干净 ✅)不写 export,直接写变量
sudo nano /etc/environment
示例:
MY_VAR=value
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/your/path"
✅ 特点:
⚠️ 不支持变量扩展(不能写 $PATH)
/etc/profile.d/*.sh(推荐系统级脚本方式 ✅)适合:软件、全局配置
sudo nano /etc/profile.d/myenv.sh
内容:
#!/bin/sh
export MY_VAR="value"
export PATH=$PATH:/your/path
权限:
sudo chmod +x /etc/profile.d/myenv.sh
✅ 登录时自动加载
✅ 比直接改 /etc/profile 安全、清晰
如果你发现:
在 shell 里能读到变量,但 systemd 服务读不到
那你需要 systemd 专用方式
systemctl --user edit your-service
[Service]
Environment="MY_VAR=value"
sudo systemctl edit your-service
或:
sudo nano /etc/systemd/system/my.service
[Service]
Environment="MY_VAR=value"
然后:
sudo systemctl daemon-reload
sudo systemctl restart your-service
| 场景 | 推荐方式 |
|---|---|
| 当前用户 shell | ~/.profile |
| 所有用户 shell | /etc/profile.d/*.sh |
| 登录 / 图形界面 | /etc/environment |
| systemd 服务 | systemctl edit |
| 临时测试 | export VAR=value |
echo $MY_VAR
env | grep MY_VAR
如果你愿意,可以告诉我:
我可以直接给你最合适的一条配置方案。