终端和shell一样吗?

终端和shell一样吗?

我知道这听起来可能有点愚蠢,但我只是想知道 Linux 世界中这两个词之间是否真的有区别。我知道 Shell 是一个命令行界面,有许多变体,如 Bash、Korn 等。我还知道 Ctrl+Alt+T 可以在 Ubuntu 上启动终端。我只是想把这两个点联系起来。

这是否意味着终端是打开的窗口,而 shell 是后台运行的程序,用于解释窗口中输入的命令?或者它们是一样的,其中终端是用于抽象 Shell 等概念的通用术语?

这两个词到底有何区别?

答案1

是的,终端仿真器(通常简称为终端)“只是窗口”。它运行基于文本的程序,默认情况下是您的登录 shell(在 Ubuntu 中为 bash)。当您在窗口中键入字符时,终端会在窗口中绘制这些字符,并将其发送到 shell(或其他程序)的标准输入。shell 输出到标准输出和标准错误输出的字符会发送到终端,终端又会在窗口中绘制这些字符。

因此,是的,shell 和终端仿真器是完全独立的程序,并且任何一个都可以单独使用。

答案2

我认为这个问题已经在 Unix 和 Linux stackexchange 网站上得到了相当彻底的探讨:shell、控制台和终端之间的区别

答案3

是的,终端仿真器和 shell 是两个不同的程序。如您所知,区别的一个例子是,启动终端窗口可以根据您配置的内容运行不同的 shell(bash、tcsh、ksh、ash,甚至 python!)。

另一个区别是,除了默认的终端仿真器之外,还有更多的终端仿真器:gnome-terminal、几种 xterm、konsole(用于 KDE)等(参见:http://www.howtogeek.com/howto/ubuntu/set-the-default-terminal-emulator-on-ubuntu-linux/)。任何 shell 都可以在这些终端仿真器中的任何一个中运行,没有太大的困难。

第三个区别是,除了运行 shell 命令之外,您还可以在终端仿真器中启动某些交互式应用程序,它们将在同一窗口中运行(并且仍然依赖相同的终端仿真器程序来处理实际图形),例如 vim 文本编辑器、nethack RPG 等。如果您愿意,您可以在终端仿真器中设置一个配置文件,以便在打开新选项卡时自动启动 nethack;不涉及 shell,但终端仿真器仍然是同一个程序。

第四个不同点是,您可以使用 ssh 之类的程序在终端窗口内执行远程登录。在这种情况下,您的 shell(或您远程运行的任何程序)正在另一台计算机上运行,​​而 ssh 程序将其连接到您的计算机上运行的本地终端仿真程序,该程序可处理图形。

相关内容