站在用户登录的角度来说,shell分为两种类型:
登录式shell:如通过某终端登录,使用su - username命令切换用户。
非交互式shell:如使用su username命令切换用户;图形终端下打开命令终端;shell脚本。
更简单但不精确的区分方法是:不需要输入账号密码才能登陆的shell的都是非交互式shell,如子shell、脚本shell、图形终端下打开的命令窗口,但su username除外。
bash的环境配置文件:
全局配置:/etc/profile、/etc/profile.d/*.sh、/etc/bashrc。
个人配置:~/.bash_profile、~/.bashrc。
读取和执行这些环境配置文件是有顺序的,如果设置有冲突,则后读取的配置文件覆盖先读取的。
读取配置文件流程:
登录式shell读取环境配置文件的顺序是:
(1)/etc/profile-->/etc/profile.d/*.sh
(2)~/.bash_profile-->~/.bashrc-->/etc/bashrc即先读取全局配置文件/etc/profile,再读取用户配置文件~/.bash_profile。但/etc/profile文件会调用/etc/profile.d/目录下的所有.sh文件,~/.bash_profile会调用~/.bashrc文件,~/.bashrc又会调用/etc/bashrc文件。其实/etc/bashrc还会调用/etc/profile.d/*.sh,但不会重复设置已设置过的选项。
非登录式shell读取环境配置文件的顺序是:
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
如图:
也就是说:
/etc/profile:任意用户登陆时读取。非登录式shell不会读取。
~/.bash_profile:对应用户登陆时读取,用以配置将要打开的bash shell。非登录式shell不会读取。
~/.bashrc:关于bash shell的配置,对应的用户每次打开一个shell都会读取该文件,因为登录式或非登录式shell都会读取该文件。
/etc/bashrc:(所有用户)每次打开一个shell(登录式或非登录式)都会读取该文件。
回到系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/7229025.html