在 CentOS 系统中,环境变量(env variables)的优先级从高到低如下:
当前 shell 的局部变量:这些变量仅在当前 shell 会话中有效,关闭 shell 后将丢失。局部变量的优先级最高。
当前 shell 的局部变量(通过 source 命令加载的脚本中设置):这些变量在当前 shell 会话中有效,关闭 shell 后将丢失。它们的优先级低于直接在 shell 中设置的局部变量。
用户级别的环境变量:这些变量在用户的 ~/.bashrc
、~/.bash_profile
或 ~/.profile
文件中设置。它们在用户登录时生效,对所有新开的 shell 会话有效。优先级低于局部变量。
系统级别的环境变量:这些变量在 /etc/profile
、/etc/bashrc
或 /etc/environment
文件中设置。它们对所有用户的所有新开的 shell 会话有效。优先级低于用户级别的环境变量。
系统服务级别的环境变量:这些变量在系统服务(如 systemd)的配置文件中设置。它们对所有用户的所有新开的 shell 会话以及系统服务生效。优先级低于系统级别的环境变量。
需要注意的是,如果同一个环境变量在不同的配置文件中被多次设置,那么优先级高的配置文件中的设置会覆盖优先级低的配置文件中的设置。例如,如果在 ~/.bashrc
和 /etc/profile
中都设置了 PATH
变量,那么在用户的 shell 会话中,~/.bashrc
中的设置会覆盖 /etc/profile
中的设置。