CentOS 中 环境变量(env)不生效,通常是设置位置不对、作用域不对或没有重新加载导致的。下面按常见场景给你排查和解决思路。
export PATH=$PATH:/usr/local/bin
特点:
✅ 正常,不是问题
不同用户、不同 shell 用的配置文件不同:
| 场景 | 推荐文件 |
|---|---|
| 当前用户 | ~/.bashrc |
| 当前用户(登录 shell) | ~/.bash_profile |
| 所有用户 | /etc/profile |
| 所有用户(推荐) | /etc/profile.d/xxx.sh |
⚠️ CentOS 默认 shell 是 bash
vi ~/.bashrc
添加:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
然后执行:
source ~/.bashrc
vi /etc/profile.d/myenv.sh
内容:
export PATH=$PATH:/opt/app/bin
赋予执行权限(可选):
chmod +x /etc/profile.d/myenv.sh
重新登录或:
source /etc/profile
修改配置文件后 必须执行:
source ~/.bashrc
或
. ~/.bashrc
否则不会生效。
sudo env
或
sudo java
发现 env 没生效
sudo 默认会重置环境变量
sudo -E command
visudo
添加:
Defaults env_keep += "PATH JAVA_HOME"
.bashrc 不会自动加载
source /etc/profile
echo $PATH
env | grep JAVA_HOME
如果为空,说明:
❌ 忘记 export
JAVA_HOME=/usr/local/java # 错误
✅ 正确
export JAVA_HOME=/usr/local/java
❌ 修改了 ~/.bash_profile 但用的是非登录 shell
❌ 写了 /etc/profile 但没重新登录
❌ sudo 下变量被重置
你可以直接贴出:
我可以一步一步帮你查 ✅