Linux环境变量文件
在Linux中有多个文件涉及到环境变量,不同文件之间的生效范围不同。可以配置环境变量的文件有/etc/profile
,/etc/bashrc
,/etc/profile.d/*.sh
,~/.bashrc
,~/.bash_profile
等。它们的读入顺序也有所不同
/etc/profile
该文件为系统级别的环境变量,为每个用户设置环境变量。当用户第一次登录的时候,该文件被执行。在执行的时候会读取/etc/profile.d
目录下的脚本文件并进行执行,因此我们可以在该目录下新建.sh
文件配置我们自己的环境变量,方便管理。
/etc/bashrc
在执行完/etc/prifile
中的内容之后,如果用户运行的是bash,那么接着会执行这个文件。也是系统级别的环境变量。文件中也会读取/etc/profile.d
目录下的脚本文件并进行执行。每当一个新的bash
shell被打开时,会执行此文件。一般来说,如果想要每个使用bash的用户新开一个bash或者每次登录都执行某些操作,可以在这个文件中设置。
~/.bash_profile
该文件属于用户级别的环境变量。当用户登录的时候,该文件仅仅执行一次。默认情况下,它会执行用户的.bashrc
文件。该文件的主要特点就是在登录的时候仅执行一次。
~/.bashrc
该文件属于用户级别的环境变量,在登录的时候,或者每次打开一个新的shell的时候,会执行该文件。默认情况下,该文件会执行/etc/bashrc
文件。
login shell与非login shell
这里还有一个login shell和non-login
shell的区别。简单来说,我们通过终端输入用户名密码登录系统之后,得到的就是一个login
shell,而当我们执行ssh xxx command
,即只是通过ssh到某个机器执行某条命令,则属于non-login
shell。
这两种shell的主要区别在于启动的时候会加载不同的配置文件。
login shell会加载上面所说的所有文件,而non-login
shell只会加载~/.bashrc
文件,当然由于文件中的设置关系,也会依次执行到/etc/bashrc
,以及/etc/profile.d
目录下的脚本文件。
因此无论哪种shell,在启动的时候都会加载/etc/profile.d/*.sh
中设置的环境变量。