在 Linux 系统中,环境变量可以通过多个配置文件进行设置。不同的配置文件作用范围、加载时机和适用用户各不相同。下面是几个常见的环境变量配置文件及其区别:
一览表(按优先级 & 作用范围)
| 文件名 | 类型 | 作用用户 | 作用范围 | 加载时机 |
|---|---|---|---|---|
/etc/profile | 全局 | 所有用户 | 登录 shell | 登录时加载一次 |
/etc/profile.d/*.sh | 全局 | 所有用户 | 登录 shell | 被 /etc/profile 调用 |
~/.bash_profile | 用户级 | 当前用户 | 登录 shell | 登录时加载一次 |
~/.bash_login | 用户级 | 当前用户 | 登录 shell | 如果没有 .bash_profile |
~/.profile | 用户级 | 当前用户 | 登录 shell | 如果没有上面两个 |
~/.bashrc | 用户级 | 当前用户 | 非登录 shell、交互式 | 每次打开终端或运行 bash |
/etc/bashrc 或 /etc/bash.bashrc | 全局 | 所有用户 | 非登录 shell、交互式 | 被 .bashrc 调用 |
/etc/environment | 全局 | 所有用户 | 所有程序(登录/非登录) | 系统启动时加载 |
登录 Shell 与 非登录 Shell 的区别
-
登录 Shell:使用
ssh登录、控制台登录、图形界面登录。- 会加载:
/etc/profile、~/.bash_profile等。
- 会加载:
-
非登录 Shell:直接打开终端、执行脚本等。
- 会加载:
~/.bashrc。
- 会加载:
实际配置建议
设置 Java 环境变量为例:
设置当前用户有效的 Java 环境变量:
编辑 ~/.bash_profile 或 ~/.bashrc:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
修改后执行:
source ~/.bash_profile
# 或 source ~/.bashrc
设置全局环境变量(所有用户生效):
编辑 /etc/profile 或 /etc/environment(推荐):
/etc/profile添加:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
/etc/environment(格式更简单,不支持复杂逻辑):
JAVA_HOME="/usr/lib/jvm/java-17-openjdk"
PATH="/usr/lib/jvm/java-17-openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
如何验证环境变量是否生效
echo $JAVA_HOME
echo $PATH

被折叠的 条评论
为什么被折叠?



