什么是login shell
和interactive shell
,什么是.bash_profile
和.bashrc
?
交互式外壳程序是一个不带非选项参数的启动程序,除非指定了-s而不指定-c选项,并且其输入和错误输出都连接到了终端(由isatty(3)确定),或者是一个以-i选项。
交互式外壳程序通常从用户终端读取和写入用户终端。
[ gnu bash手册]
一个登录shell是你登录一个壳。您可以从ps -f
列表中识别出登录外壳,程序名称的开头将带有连字符,例如:
root 3561 3553 0 09:38 pts/0 00:00:00 -bash
qa 7327 3432 0 10:46 pts/1 00:00:00 -bash
一个交互式壳是一个从它的标准输入,通常是一个终端读取命令。
例如,如果您使用xterm或终端仿真器(如)登录到bash putty
,则会话既是登录shell,也是交互式会话。如果您随后键入,bash
则输入一个交互式外壳程序,但它不是登录外壳程序。
如果运行外壳程序脚本(包含外壳程序命令的文件),则它既不是登录外壳程序也不是交互式外壳程序。
启动文件在bash中是高度可定制的:
调用登录bash shell时,它将/etc/profile
被来源(在当前环境中执行)。之后,检查三个文件是否存在。这些文件的检查按以下顺序进行:
如果/etc/profile
存在,则源(运行)
如果~/.bash_profile
存在,源(运行),
如果~/.bash_login
存在,源(运行),
如果~/.profile
存在,源(运行)
找到匹配项后,其他文件将被忽略,即使它们存在也是如此。和/etc/bashrc
文件可能同时使用~/.bash_profile
该~/.bashrc
文件。这将意味着该/etc/bashrc
文件源自bash的所有交互式调用,无论它是登录外壳程序还是非登录外壳程序。
因此,.bashrc
每当您请求一个新的交互式shell时,该文件也会运行。这不包括外壳脚本。通常,变量,别名或函数位于此文件中。
如果有适当的说明,Bash Shell脚本会读取其他文件。如果用户定义(通常是他们自己.bash_profile
)BASH_ENV
包含文件名的变量,脚本将读取该文件名。如果未设置(并导出)此变量,则bash脚本将不会读取任何启动文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句