我对术语感到困惑。 Shell,控制台和终端之间有什么区别?

评论

那么提示甚至命令行呢?

看看Unix和Linux上的这个问题:unix.stackexchange.com/questions/4126/…

我老婆说“黑屏”

iTerm2,terminal,Hyper是终端。 Zsh(z-shell),bash(Bourne又是shell)都是shell。现在,一切都有意义,以它们的名字!我个人不会打扰控制台。

#1 楼

在Linux的世界中,从用户在键盘的角度来看,它们看起来都一样。它们之间的交互方式有所不同。

shell是实际处理命令并返回输出的程序。大多数外壳程序还管理前台和后台进程,命令历史记录和命令行编辑。这些功能(以及更多功能)是现代Linux系统中最常见的shell bash中的标准功能。

终端程序是指运行shell的包装程序。几十年前,这是一种物理设备,仅包含显示器和键盘。随着unix / linux系统增加了更好的多处理和窗口系统,该终端概念被抽象到了软件中。现在,您有了诸如Gnome Terminal之类的程序,该程序会在Gnome窗口环境中启动一个窗口,该窗口将运行可在其中输入命令的shell。

控制台是一种特殊的终端。从历史上看,控制台是单个键盘和监视器,插入计算机上专用的串行控制台端口,用于与操作系统进行低级别的直接通信。现代linux系统提供虚拟控制台。这些是通过组合键(例如Alt + F1或Ctrl + Alt + F1;功能键对不同的控制台编号)来访问的,这些组合在linux操作系统的较低级别上进行处理-这意味着不需要任何特殊服务即可安装并配置为运行。还可以使用Shell程序与控制台进行交互。

评论


在终端是带键盘的显示器之前,它们是电传打字机-一种电子打字机。 en.wikipedia.org/wiki/Teleprinter

–凯文·潘科(Kevin Panko)
2010年5月24日14:03

控制台有时表示“物理连接到此计算机的键盘和监视器”。例如,“我从控制台登录,因为服务器没有响应网络。”

–凯文·潘科(Kevin Panko)
2010年5月24日在16:24

@Doug Harris:可以添加一些您正在谈论的硬件的图片吗?

–爪
2010年5月29日20:36

因此,如果终端机和控制台在现代时代都以软件实现,那么两者(现在)有什么区别?

–加文·霍普(Gavin Hope)
2015年10月26日在10:23

@GavinHope我认为控制台是“低级”的,是作为OS核心的一部分实现的。图形外壳(如Gnome)在此之上运行,然后终端(如gnome-terminal)在此之上运行。因此,区别在于它们的运行级别。

–乔治·奥皮内尔(Jorge Orpinel)
16年10月10日在8:35

#2 楼

外壳程序是一个显示提示并等待您键入命令的程序。它执行它们,然后打印另一个提示。因此,就像Windows中的CMD或Unix中的Bash一样。它可以在终端中或控制台上运行。

控制台最初是物理的东西,是控制面板。用计算术语来说,通常是指您在GUI启动之前或完成之后看到的显示。您有时可以切换为显示它而不是GUI。这是操作系统打印错误消息的地方。在多用户计算机上,实际上是显示器连接到计算机。只是使您感到困惑,在Windows上,它还可能意味着其中包含命令外壳的窗口,即终端。

终端也最初是硬件,用于与计算机进行通信。如今,它通常是指带有命令行(外壳)的窗口,该窗口可能出现在GUI窗口中,而不是显示在GUI中。

评论


那么,如果bash_profile运行startx,bash不是shell吗?

– RichieHH
20/12/9在21:59

@RichieHH,我要说的是bash进程仍然是一个shell,但是如果仅用于运行startx,则它的作用并不大。

– Peter Westlake
20 Dec 14 '13:49

#3 楼

对于初学者来说

对于更详细的描述:https://askubuntu.com/a/506628/130518


终端=文本输入/输出环境< br控制台=物理终端(您可以实际触摸到的东西)
shell =命令行解释器

在下文中,我将描述最正常的使用情况。

终端使用外壳。
外壳可以在没有终端的情况下运行。

与日常用品相关:

终端->家里的电视屏幕
Shell->在电视屏幕上运行的程序

另一种查看方式:耳朵(输入)和嘴巴(输出)是声音的端子。您的大脑是使用特定外壳(处理)解释这些声音的工具。

终端是给我们人类使用的,因此我们可以在外壳中读写信息。 Shell可以在不需要人工干预的后台进程中运行,例如cron作业,因此不需要终端。

存在的终端的一些示例:


命令提示符
guake

存在的几个shell示例: Windows]
zsh(Z壳)

我只写了这两个通常如何工作,还有其他工作方式,但这是针对更高级的用户的。

评论


让我惊讶的是,运行脚本的bash解释器的实例仍然是shell。

– RichieHH
20/12/9在21:59

#4 楼

终端是基于文本的界面(可能是外壳)

控制台和外壳之间的区别是我尚不了解的,但是我可以告诉您终端与外壳的区别。

终端(根据Wikipedia)是“用于文本输入和显示的串行计算机接口。信息以预选格式的字符数组的形式呈现”。您可以使用终端与外壳进行交互,但是也可以使用终端与基于文本的GUI交互,有时也称为终端用户界面。例如:



Vim具有包含行号和命名标签的GUI元素

Nano具有包含命令帮助菜单的GUI元素

Tmux的GUI元素包括状态栏和窗格之间的分隔线

Minicom的GUI元素包括菜单和状态栏

每种情况下,GUI元素是用文本而不是像素“绘制”的。

评论


我不确定它的定义是否仅基于文本。在某种程度上,某些GUI可以视为终端imo。

– Jiggunjer
16年6月29日在10:47

#5 楼

换个角度思考,那就是发展。
即使您不具备很深的开发知识,您也可能知道基础知识,即:编辑程序,将其提交给编译器或构建编译应用程序的解释器。
控制台就像程序的编辑器;它可以帮助您编写代码,但实际上并不能执行任何操作:完成后,您可以将其发送给编译器。
您可以使用首选的编辑器,vim,gedit,emacs,notepad ++,Netbeans,eclise等,但最后它们只是不同的工具:如果编写相同的程序,输出将是相同的。 />
在这个比喻中,外壳是编译器。输入到终端的命令将发送到解释它们并立即执行它们的外壳。

终端显然不是一个文本编辑器,主要是因为它不产生文件而是将文本发送到底层shell并从中获取输出。

Shell不是编译器,实际上它解释命令并立即执行而不是构建可执行文件。

即使有这么大的区别,我也发现了这个隐喻可以帮助我们更好地理解这个想法。

#6 楼

确实没有太大区别。当“外壳”是程序时,“终端”是该程序的前端包装,而“控制台”是与计算机(键盘/屏幕)的物理连接。

运行的操作系统有所不同。 “标准”外壳是BASH,通常可在所有Linux / Unix版本上使用。 Windows使用完全不同的外壳。