交互式外壳是什么意思?


25

UNIX:Kenneth H. Rosen等人的《完整参考》第二版。

您可以在登录后通过使用外壳名称作为命令来启动另一个外壳。例如,要启动Korn Shell,可以在命令提示符下键入ksh。这种类型的外壳不是登录外壳,您不必再次登录即可使用它,但它仍然是交互式外壳,这意味着您可以通过键入命令来与外壳进行交互(而不是使用外壳来运行脚本,如第20章中所述。使用图形界面时在终端窗口中运行的Shell实例也是交互式非登录Shell。启动非登录外壳程序时,它不会读取您的.profile,.bash_profile或.login文件(或您的.logout文件),但仍会读取第二个外壳程序配置文件(例如.bashrc)。这意味着您可以测试对的更改。

我正在浏览上述内容,但我不明白交互式外壳的含义。如果使用终端机,不会读取.profile吗?

而且,当您说bourne不是交互式shell而bash / csh是交互式shell时,这意味着什么?

Answers:


27

交互式外壳程序就是您用来键入命令并从这些命令取回输出的任何外壳程序进程。也就是说,您要与之交互的外壳。

因此,您的登录外壳程序是交互式的,您手动启动的任何其他外壳程序也是交互式的,如您在问题中引用的摘录中所述。相反,当您运行Shell脚本时,将启动一个非交互式Shell,该外壳将运行脚本中的命令,然后在脚本完成时退出。

Bourne shell可以用作交互式shell,就像bash或一样tcsh。实际上,许多系统(例如FreeBSD)都sh用作默认用户外壳程序。现代炮弹一样bashzshtcsh,等有许多特性的Bourne shell没有的,这使得它们更加舒适和便捷交互使用(命令历史记录,竣工等)。

交互式非登录外壳程序(即您从另一个外壳程序手动启动或通过打开终端窗口启动的外壳程序)不会读取您的.login.profile文件。这些仅由登录外壳程序(由login系统进程或X显示管理器启动的外壳程序)读取和执行,因此,它们包含的命令和设置在登录会话开始时仅应用一次。所以,当你启动一个终端,外壳,它产卵你不读你的登录文件(.login用于C风格的外壳,.profile对于Bourne风格弹),但它确实看了.cshrc.bashrc等文件。


可以将外壳作为非交互式登录外壳运行。
jw013

正确,但可能会造成混淆!
D_Bye 2012年

ksh还是现代外壳:-)请访问www2.research.att.com/sw/download,并使用左侧空白菜单导航至AST-> ksh->概述。David Korn和Glen Fowler每年都会发布几次新版本。祝你们好运。
剥壳机2012年

1
@shellter-是的,的确如此。但这不是我用过的一个,并且我不得不停止枚举shell了!;-)
D_Bye 2012年

您说过的The Bourne shell can be used as an interactive shell, just like bash or tcsh. Bourne贝壳与bash吗?
Mr.Web
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.