在linux系统中,shell分为两种,一种是login-shell,一种是non-login-shell。我们知道一个编程环境启动是肯定要初始化一些设置。初始化有命令提示符(PS1),命令查找路径(PATH)等。
在linux中,login-shell的初始化使用到文件为/etc/profile,这个文件除了设置一些基本设置之外还会调用/etc/profile.d/目录下的以.sh结尾的文件。这个文件或目录中的初始化设置是对所有用户生效的,因为每个用户登录都会从读取/etc/profile开始。所以,如果我们要设置一个新的环境变量对所有用户生效,不防
在/etc/profile中添加,或者在/etc/profile.d/目录下添加一个文件,后缀为.sh。比如我们添加一个java JDK的运行环境,我们就可以在/etc/profile.d/java.s写入JAVA_HOME等信息。
login-shell最后还会调用~/.bash_profile这个文件的设置。这个文件文件也会读到~/.bashrc里面的设置。这是个人的环境设置。
读取流程:
---->>
/etc/profile
--------------------->> ~/.bash_profile --------------->>开始操作bash
----->>/etc/inputrc
----->>~/.bashrc
----->>/etc/profile.d/*sh
------>>/etc/bashrc
----->>/etc/sysconfig/i18n
------>>/etc/profile.d/*.sh
而non-login-shell只会调用~/.bashrc这个文件的设置。
这两个shell分别用在什么时候呢?login-shell使用在机器启动完,等待用户输入用户名,密码之后。而non-login-shell一般用在启动系统服务时的登陆用户。
要注意的是,在X window下启动的终端是属于non-login-shell的。
其他一些相关配置文件:
/etc/man.config:
man page时的查找目录文件。
~/.bash_history: 历史命令记录文件,一般为最新的2000条。
~/.bash_loginout: 注销bash后系统的操作或者一些提示。