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