在 CentOS 中,“永久修改 env(环境变量)”要看你是指系统级、用户级还是临时生效。下面按场景给你一个最常用、最规范的做法汇总。
~/.bashrc(推荐)只对当前用户有效,登录或打开新 shell 自动生效。
vim ~/.bashrc
添加:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
让配置立即生效:
source ~/.bashrc
✅ 适合:开发环境、个人用户
~/.bash_profileCentOS 默认登录 shell 会读取该文件。
vim ~/.bash_profile
添加:
export PATH=$PATH:/opt/myapp/bin
生效:
source ~/.bash_profile
/etc/profile.d/*.sh(强烈推荐 ✅✅)这是 CentOS 官方推荐方式,干净、好管理。
sudo vim /etc/profile.d/myenv.sh
内容示例:
#!/bin/bash
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
赋予执行权限(可选但通常加上):
sudo chmod +x /etc/profile.d/myenv.sh
重新登录或执行:
source /etc/profile
✅ 适合:
/etc/profile(不推荐 ⚠️)sudo vim /etc/profile
export PATH=/usr/local/bin:$PATH
⚠️ 会影响所有用户,且容易被系统升级覆盖。
/etc/environment(不常用)适用于 非 shell 程序,不支持变量扩展。
sudo vim /etc/environment
PATH=/usr/local/bin:/usr/bin:/bin
⚠️ 不支持 export,不支持 $PATH
如果是 systemd 服务(如 Nginx / Java 程序):
sudo vim /etc/systemd/system/myservice.service
[Service]
Environment="JAVA_HOME=/usr/local/java"
Environment="PATH=/usr/local/java/bin:/usr/bin:/bin"
重载:
sudo systemctl daemon-reload
echo $JAVA_HOME
echo $PATH
env
| 需求 | 推荐方式 |
|---|---|
| 当前用户 | ~/.bashrc |
| 所有用户 | /etc/profile.d/*.sh |
| 系统级但旧方式 | /etc/profile |
| systemd 服务 | service 文件 |
| 非 shell 程序 | /etc/environment |
如果你愿意,可以告诉我:
JAVA_HOME、PATH、LANG)我可以给你精确到命令级的配置方案。