在 CentOS(以及大多数 Linux 发行版)中,/etc/environment 和 ~/.bashrc 都与环境变量有关,但作用时机、作用范围、用途完全不同。
下面从多个维度对比说明。
| 对比项 | /etc/environment |
~/.bashrc |
|---|---|---|
| 作用范围 | 系统级(所有用户) | 用户级(当前用户) |
| 生效时机 | 登录阶段(PAM) | 每次打开 bash shell |
| 是否依赖 shell | ❌ 不依赖(非脚本) | ✅ 依赖 bash |
| 语法 | 简单 KEY=VALUE |
shell 脚本语法 |
| 是否支持变量扩展 | ❌ 不支持 | ✅ 支持 |
| 是否影响非交互 shell | ✅ 是 | ❌ 否(默认) |
| 是否影响登录 shell | ✅ 是 | ❌(通常) |
/etc/environmentPATH=/usr/local/bin:/usr/bin:/bin
LANG=en_US.UTF-8
JAVA_HOME=/usr/lib/jvm/java-11
❌ 错误写法
PATH=$PATH:/usr/local/bin # 不支持变量扩展
export PATH # 不支持 export
PATH、LANG、JAVA_HOME~/.bashrcexport PATH=$PATH:/opt/myapp/bin
export JAVA_HOME=/usr/lib/jvm/java-11
alias ll='ls -lh'
✅ 支持:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
.bashrc~/.bash_profile 中 source 它:if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
/etc/environment✅ 示例:
PATHLANGJAVA_HOME~/.bashrc✅ 示例:
PATHalias ll='ls -lh'PS1 提示符/etc/environment
↓
/etc/profile
↓
~/.bash_profile
↓
~/.bashrc
~/.bashrc
/etc/environment是“环境变量配置”,~/.bashrc是“bash 行为配置”。
如果你愿意,我也可以帮你画一张 CentOS 环境变量加载流程图,或者给出 生产环境推荐配置方案。