在 CentOS 中,“永久设置环境变量(env)”主要取决于作用范围(当前用户 or 所有用户)以及 Shell 类型(默认是 bash)。下面按常见场景给你一个完整说明。
export JAVA_HOME=/usr/local/java
编辑当前用户的 shell 配置文件:
vi ~/.bashrc
在文件末尾添加:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
使配置立即生效:
source ~/.bashrc
✅ 适用场景:
sudo vi /etc/profile
在末尾添加:
export GLOBAL_VAR=/opt/app
export PATH=$GLOBAL_VAR/bin:$PATH
生效:
source /etc/profile
⚠️ 注意:
在 /etc/profile.d/ 下新建脚本:
sudo vi /etc/profile.d/myenv.sh
内容:
#!/bin/bash
export MY_ENV=value
export PATH=/opt/app/bin:$PATH
赋予执行权限:
sudo chmod +x /etc/profile.d/myenv.sh
✅ 优点:
编辑 service 文件:
sudo vi /etc/systemd/system/myapp.service
在 [Service] 段:
[Service]
Environment="JAVA_HOME=/usr/local/java"
Environment="APP_ENV=prod"
重载并重启:
sudo systemctl daemon-reload
sudo systemctl restart myapp
| Shell | 用户级 | 系统级 |
|---|---|---|
| bash | ~/.bashrc |
/etc/bashrc |
| bash(登录) | ~/.bash_profile |
/etc/profile |
| zsh | ~/.zshrc |
/etc/zshrc |
echo $JAVA_HOME
env | grep JAVA_HOME
❌ 只在终端 export
❌ 修改了文件但没 source
❌ 在 cron / systemd 中没单独设置环境变量
✅ 个人用户:~/.bashrc
✅ 系统级变量:/etc/profile.d/*.sh
✅ 服务变量:systemd Environment
如果你愿意,可以告诉我:
我可以直接给你一份可直接复制的配置。