在Debian(以及其他大多数Linux发行版)中,环境变量的优先级通常遵循以下规则:
本地设置:在用户的家目录下的.bashrc
、.bash_profile
或.profile
文件中设置的环境变量具有较高的优先级。这些文件通常在用户登录时被读取。
系统范围设置:在/etc/environment
文件中设置的环境变量具有全局优先级,适用于所有用户。此外,/etc/profile
和/etc/profile.d/
目录下的脚本也会在用户登录时被读取,它们设置的环境变量优先级低于用户级别的设置。
会话设置:在当前shell会话中直接使用export
命令设置的环境变量具有最高的优先级。这些设置在当前shell会话期间有效,关闭shell后失效。
子进程继承:当一个进程启动另一个进程时,子进程会继承父进程的环境变量。但是,子进程可以通过exec
系列函数或fork
和exec
组合来修改自己的环境变量。
特定程序设置:某些程序可能会在其配置文件中设置环境变量,这些变量的优先级取决于程序的实现。
总结一下,环境变量的优先级从高到低大致为:当前shell会话设置 > 用户级别设置(.bashrc
、.bash_profile
等)> 系统范围设置(/etc/environment
、/etc/profile
等)> 子进程继承的环境变量。
请注意,这些规则可能会因不同的shell和系统配置而略有不同。要查看特定环境变量的值和来源,可以使用echo $VARIABLE_NAME
命令或env
命令。