Linux的.bash_profile, .bash_logout, .bashrc 三个文件对 bash 来说有特殊的意义。你可以通过修改这三个文件让系统自动为你的账户进行个性化环境的设置。这些文件可能存在于你的主目录下面,如果不存在,那么系统将根据/etc/profile文件进行配置。
.bash_profile非常重要,你每次登录shell的时候都要去读这个文件(并且只在登录时读取)。查看该文件,可能是如下内容:
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
SHELL=/bin/bash
MANPATH=/usr/man:/usr/X11/man
EDITOR=/usr/bin/vi
PS1='\h:\w\$ '
PS2='> '
export EDITOR
你可以用vi或者emacs对其进行编辑(建议不要更改原来的内容,只要把你要写的内容添加在后面就行,或者在进行编辑之前对其进行备份)。修改完并不会立即生效,系统必须re-read一下才行。你可以退出并重新登录系统,或者用source .bash_profile命令使之生效。
.bash_logout相反,每次退出shell的时候才去读这个文件(并且只在退出时读取)。如果你需要在退出系统的时候执行一些命令,比如清除一些临时文件,清除一些日志,你可以把命令写入该文件。该文件并不是必须存在的,当你发现你的账号没有这个文件,那么意味着你退出系统的时候,没有指定的额外的命令需要执行。
各种版本的shell命名.bash_profile这个文件的方式有所不同。所以当你看到.bash_login,它就对应前文所提的.bash_profile。如果你使用bash登录,bash首先回去寻找.bash_profile文件,如果该文件不存在,则会自动寻找.bash_login,如果还是不存在,则自动再去寻找 .profile 文件。
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。