所谓登陆shell,指的是当用户登陆系统时所取的那个shell,登陆shell属于交互式shell。 java
登陆shell将查找4个不一样的启动文件来处理其中的命令。 bash shell处理文件的顺序以下: shell
1:/etc/profile 2:/etc/profile.d等待配置文件 3:$HOME/.bash_profile 会加载$HOME/.bashrc和/etc/bashrc 4:$HOME/.bash_login 5:$HOME/.profile
/etc/profile是bash shell在系统上的主默认启动文件,全局系统环境配置文件,系统上每个用户在登录时都将执行此文件。经过设置这个文件, 超级用户能够为全系统内的全部bash用户创建默认特征。不一样 Linux版本在此文件放置的命令不尽相同, 在redflag中,该文件设置了几个重要的变量, 如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,详情能够查看具体的文件。
其他3个文件具有相同的功能——提供特定于用户的启动文件,大多数Linux版本只使用其中之一。如:RedFlag使.bash_profile Ubantu使用.profile .
shell依次查找~/.bash_profile、
~/.bash_login、
~/.profile(~是用户主目录的速记符),
并执行它找到的首个文件中的命令。
能够将命令放置在这些文件中以覆盖掉/etc/profile文件中的默认设置。
也就是后面的文件能够覆盖或者修改前面的设置 。 ubuntu
2. 交互式非登陆shell
若是启动了一个bash shell而没有登入系统(如在CLI提示符中键入bash),则启动了一个交互式非登陆shell.
而登陆shell的初始化文件(好比.bash_profile)一般会运行这个文件。这样,登陆shell和非登陆shell均可以使用.bashrc中的命令。
如以X Window环境登陆Linux时,在X环境所起动的终端,那些shell都是非登陆shell.
在交互式非登陆shell中并不执行前面提到的初始化文件中的命令。然而,交互式非登陆shell从登陆shell继承了由这些初始化文件设置的 shell变量。
(1) $HOME/.bashrc
交互式非登陆shell执行~/.bashrc文件中的命令.在每次执行shell脚本时,都会从新读取这个文件,因此是最完整的。 bash
可是万事都不是同样的,debain系列的是不一样的,如ubuntu
/etc/profile-->/etc/environment-->$HOME/.profile
要配置java等变量时,都/etc/environment中 spa