在 CentOS 中,让 env(环境变量)生效,通常取决于你是临时生效还是永久生效,以及你是当前会话还是所有用户/开机生效。下面按常见场景说明:
export NAME=value
例如:
export JAVA_HOME=/usr/java/jdk1.8.0_201
✅ 立即生效
❌ 关闭终端后失效
NAME=value command
例如:
API_ENV=prod python app.py
只对这一条命令生效。
vi ~/.bashrc
或
vi ~/.bash_profile
添加:
export NAME=value
然后使其生效:
source ~/.bashrc
# 或
source ~/.bash_profile
✅ 登录该用户后永久生效
vi /etc/profile
或
vi /etc/profile.d/myenv.sh
推荐用 profile.d(更规范):
cat > /etc/profile.d/myenv.sh <<'EOF'
export JAVA_HOME=/usr/java/jdk1.8.0_201
export PATH=$JAVA_HOME/bin:$PATH
EOF
使其生效:
source /etc/profile
✅ 所有用户登录后生效
如果是 systemd 服务,在 /etc/profile 里设置是不生效的。
[Service]
Environment=NAME=value
或
EnvironmentFile=/etc/sysconfig/myapp
systemctl daemon-reload
systemctl restart myapp
❌ 改了文件不 source → 不生效
❌ 在 cron / systemd 里用 ~/.bashrc → 不生效
❌ 拼写错误(如 expot)
✅ 可用 echo $NAME 验证
echo $NAME
env | grep NAME
如果你能说清楚:
我可以给你更精确的配置方式。