在 CentOS 里“永久设置环境变量(env)”常见有几种方式,取决于作用范围(所有用户 / 某个用户)和登录方式(shell / 非登录 / 服务)。下面给你最常用、最稳妥的做法。
编辑(没有就新建):
/etc/profile.d/xxx.sh
例如设置 JAVA_HOME:
sudo vi /etc/profile.d/java.sh
内容:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
保存后赋予执行权限:
sudo chmod +x /etc/profile.d/java.sh
重新登录或执行:
source /etc/profile
✅ 所有用户、所有 shell 都生效
编辑用户家目录:
~/.bash_profile
# 或
~/.bashrc
推荐写:
vi ~/.bash_profile
加入:
export MY_ENV=test
export PATH=$PATH:/opt/app/bin
生效:
source ~/.bash_profile
如果是 服务程序(如 nginx、java 服务),不要在 profile 里设。
在 service 文件里加:
[Service]
Environment=ENV_NAME=value
或:
EnvironmentFile=/etc/sysconfig/myapp
export NAME=value
⚠️ 只对当前 shell 有效,重启失效
❌ 写在 /etc/profile 本身(不推荐,难维护)
❌ 只在 ~/.bashrc 写,但用非交互 shell 不生效
❌ systemd 服务读不到 profile 变量
echo $变量名
env | grep 变量名
如果你能告诉我:
我可以直接给你一份可复制的配置。