Linux 环境变量的加载顺序和优先级

目录

当使用 export 设置环境变量的时候,注意前面的环境变量会覆盖后面设置的环境变量。

例如:

export JAVA_HOME/usr/java1.7
export PATH=$PATH:$JAVA_HOME/bin

当在 /etc/profile 中设置这 2 个选项的时候,如果 PATH 中已经包含了 java 的运行时环境,那么此设置会失败。

要想使自定义设置生效,最好将自定义的 path 设置在前面,如下:

export JAVA_HOME/usr/java1.7
export PATH=$JAVA_HOME/bin:$PATH

附:linux 系统文件的执行顺序

在刚登录 Linux 时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile~/.bash_login~/.profile 文件中的其中一个,执行的顺序为:~/.bash_profile~/.bash_login~/.profile。如果 ~/.bash_profile 文件存在的话,一般还会执行 ~/.bashrc 文件。因为在 ~/.bash_profile 文件中一般会有下面的代码:

if [ -f ~/.bashrc ] ; then
. ./bashrc
fi

~/.bashrc 中,一般还会有以下代码:

if [ -f /etc/bashrc ] ; then
. /bashrc
fi

所以,~/.bashrc 会调用 /etc/bashrc 文件。最后,在退出 shell 时,还会执行 ~/.bash_logout 文件。

执行顺序为:/etc/profile → (~/.bash_profile | ~/.bash_login | ~/.profile) → ~/.bashrc/etc/bashrc~/.bash_logout

#shell-scripting