login shell 和 non-login shell 概念
login shell 是指通过输入用户名和密码后,取得的shell,而 non-login shell 是指没有通过输入用户名和密码得到的shell,比如你在一个已经打开的shell里面输入bash,这种情况得到的shell就是non-login shell。对于这两种 shell的判断我们可以通过执行命令 echo $0来判断:
login shell 和 non-login shell 加载的配置文件的区别
下图是 login shell 启动时加载的配置文件:
~./bash_profile 文件中会将 $HOME/bin下的文件加入到PATH环境变量中,这样的话,执行这个路径下的命令就不需要加上全路径限定了。
下图是 non-login shell 启动时加载的配置文件:
bash 配置文件生效
如果修改了bash的配置文件,想要让生效的话,需要通过执行 source命令。
bash 配置文件被删除导致的异常
有的时候我们登录 shell 的时候出现如下的情况,这种情况一般是因为 ~/.bash_profile 文件被删除了导致的。
其它的 bash 配置文件
- ~/.bash_history: 这个文件保存了历史执行过的命令,
bash启动时会把这个文件中的命令读入到内存中。 - ~/.bash_logout: 这个文件中可以配置
bash登出后需要执行的一些操作。
参考
[1] : 鸟哥的Linux私房菜
[2] : Difference between Login Shell and Non-Login Shell? - Unix & Linux Stack Exchange