“login”和“交互式”bash shell有什么区别? 我在下面引用了维基百科,但是有没有人能给出更好的答案?
编辑:这是一个社区wiki,所以也许而不是投票closures你可以提供的例子,哪些情况下需要哪种types的$shell
启动脚本
当Bash开始时,它以各种不同的脚本执行命令。
- 如何按进程开始时间对ps输出进行sorting?
- 什么是反向DNS命令行工具?
- 如何通过命令行查询我的系统是否安装了KB修补程序?
- 我怎样才能比较显示只添加和删除行? 如果差异不能这样做,什么工具可以?
- 什么是有用的命令行命令在Mac OS X上?
当Bash作为交互式loginshell被调用时,它首先从文件/ etc / profile中读取和执行命令,如果该文件存在的话。 读取该文件后,它将按照该顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从第一个存在并读取的第一个中读取和执行命令。
当loginshell退出时,Bash从文件〜/ .bash_logout中读取并执行命令(如果存在)。
当一个不是loginshell的交互式shell被启动时,如果该文件存在,Bash将读取并执行〜/ .bashrc中的命令。 这可以通过使用–norc选项来禁止。 –rcfile文件选项将强制Bash从文件而不是〜/ .bashrc中读取和执行命令。
- 维基百科
在loginshell的configuration文件中,你可以设置一些你在会话期间使用的东西,而只需要做一次。 一些想法:
在非loginshell的文件( .bashrc
)中,你应该configuration你的shell:
.bash_profile
ssh-agentvariables 通常情况下,您将包含以下内容的.bash_profile
中的.bashrc
。 然后loginshell获取所有的自定义项, .bash_profile
文件不需要复制已经在.bashrc
东西。
[[ -f ~/.bashrc ]] && . ~/.bashrc