在 CentOS(以及大多数 Linux 系统)里,env(环境变量)是可以修改的,但要看你是“临时改”还是“永久改”,以及改的是“当前 shell”还是“系统/服务”。
下面分情况说明:
export MY_VAR=123
✅ 当前 shell 和子进程可用
❌ 关闭终端后失效
查看:
echo $MY_VAR
env | grep MY_VAR
MY_VAR=123 some_command
只对该命令生效。
编辑用户环境变量文件:
vi ~/.bashrc
# 或
vi ~/.bash_profile
添加:
export MY_VAR=123
生效:
source ~/.bashrc
✅ 只对当前用户生效
✅ 重启后仍有效
vi /etc/profile
# 或
vi /etc/profile.d/myenv.sh
推荐用 profile.d:
cat > /etc/profile.d/myenv.sh <<'EOF'
export MY_VAR=123
EOF
source /etc/profile
✅ 所有用户
✅ 重启有效
不能直接改已经在运行的进程的环境变量(除非用 gdb 等 Hack 手段,生产环境不建议)。
正确做法是:
如果是 CentOS 7+ 的服务:
systemctl edit nginx
添加:
[Service]
Environment=MY_VAR=123
然后:
systemctl daemon-reload
systemctl restart nginx
❌ env 是只读的
✅ env 是 Shell 维护的环境变量表,可改
❌ 改了 env 所有程序立刻生效
✅ 只有新启动的进程会继承新 env
如果你能说清楚:
我可以给你更精确的命令。