我知道这听起来很愚蠢,但我只是想知道Linux世界中使用的两个词之间是否真的有区别。我确实知道Shell是一个命令行界面,并且具有Bash,Korn等许多变体。我也知道Ctrl + Alt + T可以在Ubuntu上启动终端。我只想连接这两个点。
这是否意味着终端是打开的窗口,而外壳是在后面运行以解释在窗口中键入的命令的程序?还是它们相同,其中终端是用于抽象化Shell等概念的通用术语?
究竟这两个词有什么区别?
我知道这听起来很愚蠢,但我只是想知道Linux世界中使用的两个词之间是否真的有区别。我确实知道Shell是一个命令行界面,并且具有Bash,Korn等许多变体。我也知道Ctrl + Alt + T可以在Ubuntu上启动终端。我只想连接这两个点。
这是否意味着终端是打开的窗口,而外壳是在后面运行以解释在窗口中键入的命令的程序?还是它们相同,其中终端是用于抽象化Shell等概念的通用术语?
究竟这两个词有什么区别?
Answers:
终端模拟器(通常称为终端)是“只是窗口”,是的。它运行一个基于文本的程序,默认情况下是您的登录Shell(在Ubuntu中为bash)。当您在窗口中键入字符时,终端除了将其发送到Shell(或其他程序)的stdin外,还在窗口中绘制这些字符。Shell输出到stdout和stderr的字符被发送到终端,该终端又在窗口中绘制这些字符。
因此,是的,外壳程序和终端仿真器是完全独立的程序,并且可以在没有其他程序的情况下使用它们。
我认为这个问题已经在Unix和Linux stackexchange网站上进行了彻底的探讨:shell,控制台和终端之间的差异
是的,终端仿真器和外壳程序是两个不同的程序。如您所知,差异的一个示例是,启动终端窗口可以根据您配置的内容(bash,tcsh,ksh,ash,甚至是python!)运行不同的shell。
另一个区别是,终端仿真器不只是默认终端仿真器:gnome-terminal,xterm的多种变体,konsole(用于KDE)等(请参阅:http : //www.howtogeek.com/howto/ubuntu/set- ubuntu-linux /上的default-terminal-emulator)。任何外壳都可以在这些终端仿真器中的任何一个上运行,而没有太多困难。
第三个区别是,除了运行shell命令之外,您还可以在终端仿真器中启动某些交互式应用程序,它们将在同一窗口中运行(并且仍依赖于同一终端仿真器程序来处理实际图形),例如vim文本编辑器,nethack RPG等。如果需要,您可以在终端仿真器中设置一个配置文件,例如在打开新选项卡时自动启动nethack。不涉及任何外壳程序,但是终端仿真器仍然是相同的程序。
第四个区别是,您可以使用ssh之类的程序从终端窗口内部执行远程登录。在这种情况下,您的外壳程序(或您远程运行的任何程序)在另一台计算机上运行,并且ssh程序将其连接到在计算机上运行的处理图形的本地终端仿真器程序。