一、bash shell的分类:
登录shell:用户登录linux主机时取得的shell.
非登录shell:用户登录linux主机后(取得了登录shell)由于需要启动执行的shell,如:用su切换用户后取得的shell;在登录shell中
启动的 csh shell;图形用户界面下启动的终端等。
二、对于登录shell
1、默认情况下,在shell下改变的变量、umask、alias、只在此次登录中有效。一旦logout后再login,则 设定恢复初始值。
2、一个通过登录而得到的shell,一般是用户的初始shell.
3、在登录shell下激活的shell采用登录的shell的环境设定
4、登录shell从配置文件中读取其环境设定。
5、配置文件
全局配置文件
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
局部配置文件
~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次! 默认情况下,
他 设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取
6、全局配置文件对所有用户起作用,而局部配置文件只对单用户(拥有此局部配置文件,每个用户都用 自己的局部配置文件)起作用
三、配置文件的执行顺序
1、 登录shell配置文件执行顺序
/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/.bashrc
2、非登录shell配置文件执行顺序
~/.bashrc-->/etc/.bashrc-->/etc/profile.d/*.sh
3、 注意:如果在不同的配置文件中设置相同的变量,则后面执行的配置文件中变量的值会覆盖前面配置文件中同一变量的值。
四、其他的shell配置文件
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
~/.bash_history:用户login时自动读取其中的内容并加载到内存hiatory记录中,logout时将内存中的history记录写入其中
/etc/profile.d/*.sh:在/etc/profile中被执行,其中的环境设定,也会被全局引用
原文出处:http://blog.csdn.net/miaoheping/article/details/4601593