SHELL配置文件
主要介绍下linux下/etc/profile、~/.bash_profile(或~/.profile或~/.bash_login)、/etc/bashrc、~/.bashrc等文件的作用及执行过程。
/etc目录下的是系统级的配置文件,另外~/下的是用户个性化的配置文件。
1、/etc/profile 设置系统级的环境变量 PATH、HOME、HISTSIZE等。第一次登录时运行该脚本。
2、~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。用户可在这里设置环境变量或启动程序。当用户登录时,该文件仅仅执行一次。仅对当前用户有效。
3、~/.bashrc 用户可在这里设定别名和函数,启动shell时都会执行该配置文件。 仅对当前用户有效。
4、/etc/bashrc 启动shell时运行该脚本。当每个用户打开bash shell时都会读取该文件。
5、~/.bash_logout 退出shell时执行。
注:这里存在login shell与non-login shell的概念:
login shell:即通过输入用户名和密码登陆或用su - 获得的shell。在shell启动时会按1~4的顺序依次执行这四个配置脚本。这时获得的是一个完全和用户名相符的shell环境。
non-login shell:不需登录流程或以su的方式切换用户获得的shell。这种情况下,启动shell时只执行3和4两个配置脚本。例如,图形界面下启动一个终端,或者在原来的bash环境下再输入bash,都不需要用户名和密码;这两次获得的shell就称为non-login shell。这时许多环境还未改变。比如PATH,因为它是在1和2中设置的。
在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。
~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。
因此,总体执行顺序为:
/etc/profile-> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc-> /etc/bashrc -> ~/.bash_logout