#1 楼
简短答案:终端=文本输入/输出环境
控制台=物理终端
shell =命令行解释器
长答案:
控制台和终端紧密相关。最初,它们是指一种设备,您可以通过它与计算机进行交互:在unix的早期,这意味着类似于打字机的电传打字机式设备,有时也称为电传打字机,或简称为tty。从电子的角度来看,“终端”这个名字,从家具的角度来看,这个名字是“控制台”。在Unix历史的早期,电子键盘和显示器就成为终端的规范。
终端
在unix术语中,终端是一种实现多种数字的设备文件。读写以外的其他命令(ioctls)。某些终端由内核代表硬件设备提供,例如,输入来自键盘,输出进入文本模式屏幕,或者输入和输出通过串行线路传输。其他终端(有时称为伪终端或伪tty)由称为终端仿真器的程序(通过薄内核层)提供。某些类型的终端模拟器包括:在X Window系统中运行的GUI应用程序:Xterm,Gnome Terminal,Konsole,Terminator等。
Screen and tmux ,它在程序和另一个终端之间提供隔离层
Ssh,它将一台机器上的终端与另一台机器上的程序连接起来
期望,用于编写终端交互脚本br />
终端一词也可以具有一种设备的更传统的含义,通过该设备人们可以与计算机(通常是键盘和显示器)进行交互。例如,X终端是一种瘦客户端,是一台专用计算机,其唯一目的是驱动键盘,显示器,鼠标以及偶尔其他人机交互外围设备,而实际应用程序则在另一台功能更强大的计算机上运行。控制台通常是物理意义上的终端,根据定义,控制台是直接连接到机器的主要终端。控制台在操作系统中显示为(内核实现的)终端。在某些系统上,例如Linux和FreeBSD,控制台显示为几个终端(ttys)(特殊的组合键在这些终端之间切换)。只是为了混淆,给每个特定终端指定的名称可以是“控制台”,“虚拟控制台”,“虚拟终端”和其他变体。 ,以及“真正的”终端在什么/为什么/在哪里?。
命令行[interface]
命令行是用户键入命令的界面(其中以字符序列表示(通常是命令名称,后跟一些参数),然后按Return键执行该命令。
Shell
shell是主要接口用户登录时看到的内容,其主要目的是启动其他程序。 (我不知道最初的隐喻是外壳是用户的家庭环境,还是外壳是其他程序正在运行的内容。)
在Unix圈子中,shell专门指命令行外壳,以输入要启动的应用程序的名称为中心,然后输入应用程序应作用的文件或其他对象的名称,然后按Enter键。其他类型的环境(最近出现的Gnome Shell例外)通常不使用“ shell”一词;例如,窗口系统涉及“窗口管理器”和“桌面环境”,而不涉及“外壳”。
有许多不同的unix外壳。 Ubuntu的默认外壳是Bash(与大多数其他Linux发行版一样)。流行的替代方法包括zsh(强调功能和可定制性)和fish(强调简单性)。
命令行外壳包含用于组合命令的流控制构造。除了在交互式提示下键入命令外,用户还可以编写脚本。最常见的Shell具有基于Bourne_shell的通用语法。在讨论“ shell编程”时,几乎总是暗示该外壳是Bourne风格的外壳。一些经常用于脚本编写但缺乏高级交互功能的外壳包括Korn外壳(ksh)和许多ash变体。几乎所有类似Unix的系统都安装了Bourne风格的shell,称为
/bin/sh
,通常是ash,ksh或bash。在Ubuntu上,/bin/sh
是Dash,是ash的一种变体(之所以选择它,是因为它比bash更快,并且使用的内存更少)。 。普通用户帐户具有命令行外壳程序,但是具有受限访问权限的用户可能具有受限外壳程序或某些其他特定命令(例如,仅用于文件传输的帐户)。终端和外壳之间的分工并不完全明显。这是他们的主要任务。输入:终端将按键转换为控制序列(例如Left→
\e[D
)。外壳程序将控制序列转换为命令(例如\e[D
→backward-char
)。行版本,输入历史记录和完成情况由外壳程序提供。版本,历史记录和完成情况,并且仅在准备好执行时向外壳发送一行。唯一以这种方式运行的常用终端是Emacs中的
M-x shell
。光标将移动到下一行”,等等。终端将按照这些指令进行操作。提示纯粹是一个shell概念。输出历史记录(回滚)纯粹是终端的概念。
终端间提供应用程序间的复制粘贴(通常使用鼠标或键序列,例如Ctrl + Shift + V或Shift + Insert)。该Shell也可能具有其自己的内部复制粘贴机制(例如Meta + W和Ctrl + Y)。
作业控制(在后台启动程序并对其进行管理)主要由Shell执行。但是,它是由终端来处理诸如Ctrl + C杀死前台作业和Ctrl + Z使其暂停的组合键。
从Unix和Linux中回收
评论
对于终端设备文件和/或内核中的终端处理代码(tty ioctls,原始的/编写的,基本的行编辑)的专有术语,我不得不不同意您的看法。 terminal =处理转义码,将按键转换为字符并在屏幕上绘画(或在纸/带上打印)的东西。请参阅我的答案以获取更多详细信息。
– Peter Cordes
2014年8月5日在10:25
@PeterCordes在此级别的细节上,没有区别。从设备文件的意义上讲,POSIX将终端定义为与终端设备同义。这就是Unix的含义。它确实比处理转义代码,将按键转换为字符并在屏幕上绘制(或通过网络传输或记录到文件等)要好。
–吉尔斯'所以-不再是邪恶的'
2014年8月5日在11:18
嗯,是的,终端也确实在这种意义上被使用了。假设内核正在处理的终端设备的一端有一个终端仿真器或一个连接有终端设备的串行端口。内核tty处理(在熟模式下)仅处理一些控制代码(^ c上的信号,^ u / ^?上的行编辑(删除)。我试图在tty代码和Linux部分之间画一条线它在图形卡和USB / ps2 / AT键盘上实现了类似VT100的终端。
– Peter Cordes
2014年8月5日在12:41
@PeterCordes在内核配置中,可以省略对终端的支持(这对于某些内存非常紧张的罕见嵌入式系统很有用);它由CONFIG_TTY控制。对终端仿真器(更正确地称为伪终端,“终端仿真器”并不总是包含telnetd,screen,expect等)的支持由CONFIG_UNIX98_PTYS控制。对PC文本模式显示和键盘等的支持由CONFIG_VT控制。请参阅内核源代码中的drivers / tty / Kconfig。
–吉尔斯'所以-不再是邪恶的'
2014年8月5日在16:51
糟糕,我最近没有内核资源。 CONFIG_TTY只是在2012年才添加。无论如何,希望可以帮助任何试图将脑袋围绕谜题的不同部分以及它们如何组合的人。
– Peter Cordes
2014年8月6日下午0:57
#2 楼
可视化表示。端子
您可以坐在那里,像老板一样工作。
控制台
某些硬件可以完成很多工作。
/>控制台的另一个示例是视频游戏控制台,例如Super Nintendo [您可以在其中玩Actraiser]。
命令行[接口]
基本上任何您输入命令的内容。
评论
您偷了我的想法-我将给出基本相同的答案。这样您就可以投票了。重点当然是,尽管这些术语如今几乎是同义的,但诸如“终端”和“控制台”之类的术语却起源于较早的计算概念。
–胸骨
2014年8月5日在5:27
好功夫。简单容易
–乌马尔·穆克塔(Umar Mukthar)
2014年8月24日上午8:05
#3 楼
在Linux Information Project中:终端:从技术上讲,终端窗口,也称为终端模拟器,是模拟控制台的图形用户界面(GUI)中的纯文本窗口。 br />
我们用GUI应用程序访问用户控制台。是一个程序,可为Linux和其他类似Unix的操作系统提供传统的纯文本用户界面
命令行:命令行是全文本显示模式下命令提示符右侧的空格在用户输入命令和数据的计算机监视器(通常为CRT或LCD面板)上
评论
“终端”代表物理纯文本屏幕。您所说的实际上是“终端仿真器”。
–注册用户
2014年8月4日在8:30
@RegisteredUser终端仿真器是一种终端。终端一词不仅限于物理终端(通常是控制台一词)。
–吉尔斯'所以-不再是邪恶的'
14年8月4日在21:55
命令行的此定义是错误的。命令行不限于纯文本显示模式。
–吉尔斯'所以-不再是邪恶的'
2014年8月4日在21:57
@Gilles我已经从一个网络链接中获取了它。您提到了正确的答案。
–rɑːdʒɑ
2014年8月6日4:05
@AgentCool我不怀疑您具有复制粘贴功能。我质疑您选择的来源。无论您是否撰写,您发布的内容都是您的责任。
–吉尔斯'所以-不再是邪恶的'
2014年8月6日在7:48
#4 楼
总结一下我的回答:Shell是一个程序,它可以执行
processes
命令和returns
输出,就像Linux中的bash一样。是一种物理设备(在终端是带键盘的显示器之前,它们是电传打字机),然后将其概念转移到了Gnome-Terminal之类的软件中。运行Shell,以便我可以运行命令。控制台是一种特殊的终端,它也是一种物理设备。在Linux的示例中,我们有
run
,我可以通过Ctrl + Alt + F1到F7的组合来访问它们。#5 楼
这里的答案似乎很好。但是,对于我的口味而言,它们太干燥且太技术化,因此我来考虑一下。例如,如果您在某个城市乘坐地铁,那么您下车的车站就是终点站。或在机场,人们到达目的地国家/地区时出来的地方被视为航站楼。如今,机场航站楼之所以成为人们上飞机的地方,还是人们下飞机的地方,都是出于明显的经济原因。并吐出结果。因此,终端是可以从中获取计算结果的任何设备(例如屏幕)。碰巧,在最初的计算机中,通常将输入(键盘)和输出(屏幕)作为单个设备。因此,当今的终端被视为任何输入/输出设备。鼠标,键盘,屏幕,照相机都是端子。Shell是OS的东西。在计算机上,您拥有内核,例如在Ubuntu上,它就是Linux的一部分。现在,由于内核确实是低级的,因此提供了一个外壳程序-一个使用户可以轻松地与内核进行交互的程序。例如,这就是BASH。
控制台是(从词典中)
电气设备等。
这就是为什么在音乐行业中带有所有旋钮的面板,或者在航天飞机的命令表中,它们都被视为控制台。超级任天堂和PS2在历史上也被称为游戏机,因为第一个这样的娱乐设备看起来像盒子,上面有很多按钮。命令行只是一个界面-与GUI相反。即,计算机上有两种类型的接口: CLI(命令行界面)和GUI(图形用户界面)。主要区别在于第一个从键盘输入,而第二个从鼠标输入。
评论
您是什么意思“ GUI的反面”?
–科雷·图吉(Koray Tugay)
2015年6月10日18:39
相反,我的意思是您拥有CLI或GUI。我现在已经在答案中阐明了更多。
– Pithikos
2015年6月10日19:08
#6 楼
这些术语经常一起使用,因此人们使用其中一个术语来引用集合。 (即从上下文中通常很明显,它们表示一个提供与命令行shell界面的终端窗口)。为了防止这种情况变得冗长,我只是说xterm作为一个替代品对于XTerm / Gnome Terminal / Konsole / mrxvt / etc / etc。对于bash相同。双向ASCII / UTF8 /其他字符流,通常使用VT100或类似的转义码处理。 (例如,退格键,删除键,箭头键等会生成转义码。程序可以打印转义码以在终端屏幕上移动光标,切换为粗体和/或彩色,清除或滚动屏幕等)过去,这通常是带有屏幕和键盘以及串行端口的专用设备。现在,它通常是一个类似xterm的程序。这是xterm写入您的输入的地方,以便bash可以读取它。
每个终端(包括虚拟终端)在处于熟(相对于原始)模式时都提供基本的行编辑。这由内核代码处理。 bash提供了可以使用箭头键进行的行编辑的功能。 (如果要查看内核提供的基本行编辑是什么样的,请尝试运行
cat
并输入内容。退格键有效,并且根据您的stty设置还有其他几件事。)在终端设备的后面,将被称为终端处理代码,而不是终端本身。编辑:吉尔(Gilles)已经说服我,将tty称为终端是正确的用法。终端仿真器以及与终端连接运行的交互式程序,都取决于内核实现的终端语义。 (大多数行为是由POSIX标准化的,并且在Linux / * BSD /其他Unix中是相同的。)全屏文本编辑器取决于Unix tty行为以及光标移动转义码处理,终端模拟器的许多其他功能。
但是,具有屏幕,键盘和串行端口的物理VT100是终端的一个实例。它不需要串行端口另一端的Unix内核即可完成。可能完全不同的是,将其发送转义码和ASCII文本,并从中接收相同的内容。它只是VT100,而不是Unix终端。终端仿真器加上Unix tty语义构成了通常在其上运行bash之类的Unix终端的完整程序包。发生。它也用作命令行shell(如bash或MS-DOS)的简写,但是您也可以对fdisk之类的内容说“这是一个命令行工具”。仅考虑将终端用于其UI的程序,两个主要系列是命令行和全屏文本(例如,诸如vi或
emacs -nw
之类的编辑器)。它们的输入和输出重定向到文件,但是基于终端的全屏程序(例如编辑器或电子邮件客户端)仅是交互式的,因此不起作用。Shell是用于启动其他程序的程序。在Unix上下文中,通常指的是命令行shell(即Bourne shell或等效的C shell)。 Unix Shell也可以从文件即Shell脚本读取其输入。它们是完全的编程语言,带有变量,循环和条件,并且许多程序都是用bash编写的(或者仅具有
/bin/sh
POSIX shell功能,以提高可移植性)。也可以轻松地在交互式shell中编写快速的for i in *.something; do some_program "$i";done
。将它们放在一起,像bash这样的shell(或通过运行shell命令启动的任何程序)将在xterm写入后从
/dev/pts/N
终端设备接收字符您将输入输入到伪终端的一侧。如果运行cat
,然后按^c
,则内核tty代码将作用于^c
并将SIGINT
发送到该终端上的前台进程。 (请注意,在此上下文中使用terminal表示Unix tty,而不是终端仿真器或连接到串行端口的东西。)发生这种情况是因为Shell在启动任何程序之前将终端置于“ cooked”模式,这意味着内核作用于某些控制序列。 (tty代码仍然与处理VT100转义代码无关,只是与一些低ASCII控制代码无关。)如果您使用Linux控制台文本终端而不是xterm,则内核正在执行VT100仿真,并且处理所有这些东西。 Linux可以在没有虚拟控制台文本终端支持的情况下进行编译,但不能在没有tty支持的情况下进行编译。控制台有时被用作终端的同义词(KDE甚至有一个名为Konsole的终端仿真器)。
正如0xSheepdog指出的那样,它还具有另一种含义:本地连接的人机交互硬件。
在内核上下文中,控制台还有另一种特定的含义:它是写入引导消息的终端。这可以是一个串行端口。当然,通常情况下,通常是内核在图形硬件和USB / ps2 / AT键盘驱动程序之上实现的文本控制台。如果在命令行上使用
console=tty0 console=ttyS0,115200n8
引导Linux,则会在屏幕上和串行端口上获得内核消息。Linux实现了虚拟控制台(
/dev/tty1
至N)。您可以使用Ctrl + Alt + FN交换您的物理屏幕/键盘正在控制的屏幕。典型的Linux发行版创建6,然后在所有版本上启动getty
,因此,即使您无法启动X11,也可以登录6次并在命令,手册页和其他任何内容之间切换,无需运行屏幕之类的程序。 Linux(内核)包括VT100样式的终端仿真器,可通过虚拟控制台上的屏幕和键盘提供终端界面。标准的6个带有登录提示的虚拟终端是Ctrl + Alt + F7可使您返回您的X11会话:X服务器获取下一个可用的虚拟控制台。 (X服务器直接打开
/dev/input/...
,而不是从/dev/tty7
获取按键。)因此,“交换到文本控制台”意味着按下Ctrl + Alt + F1并使用该终端。早在计算机运行缓慢且没有太多RAM的时候,有些人在文本控制台上花费了很多时间,因为它们速度很快,您可以设置一个不错的字体,甚至将终端大小更改为较小的字符,但是一次在屏幕上显示更多。 Alt + Left和Alt + Right交换到上一个/下一个控制台。 (当然,X11对其控制台禁用了此功能,只保留了Ctrl + Alt + FN组合键。)
因此,控制台是这些术语中唯一没有一个明确定义的技术含义的术语。它有几个不同的。 (取决于您对终端正确与终端加上tty处理的感觉,您可以说终端也有多种含义。)
评论
控制台意味着“主要”物理终端不仅在内核上下文中。在/ dev / console中是相同的意思。控制台并不是特别模棱两可-尽管偶尔会在更一般的终端意义上使用它,但这非常罕见(比终端专门用来表示控制台要少得多)。
–吉尔斯'所以-不再是邪恶的'
14年8月5日在11:27
对,是,echo foo |如果当前的VT处于文本模式(包括帧缓冲控制台,而不仅仅是VGA文本模式),那么sudo tee / dev / console> / dev / null将显示在屏幕上。如果您在串行端口上使用控制台启动,我认为它将在该端口启动。您可以说/ dev / console成为设备文件,而不管内核将其视为系统控制台。系统中的其他任何东西都不需要具有控制台tty的概念(如果系统无法引导至多用户模式,通常在initrd引导启动恢复的东西会在控制台TTY上启动外壳)。
– Peter Cordes
2014年8月5日在12:15
xorg X服务器(字符串/ usr / bin / Xorg)不使用/ dev / console进行硬件访问。它确实使用/ dev / tty0,/ dev / tty%d和/ dev / vc /%d来设置自己的VT。我非常确定Xorg在通过内核控制台通过串行端口启动的PC上仍然可以正常运行。而且文本模式虚拟终端仍然可以使用。我考虑的越多,我越倾向于在内核上下文中将控制台视为仅在启动时选择的特殊终端。 (如果需要,Linux实际上可以一次在多个终端上输出其控制台消息。)
– Peter Cordes
2014年8月5日12:32
#7 楼
我认为,在分时使用计算机的早期,每个用户都有一个终端(只要有机会就可以拥有!),但是只有系统操作员才有一个控制台。该控制台可用于诸如重启计算机或获取用户终端无法完成的系统诊断之类的任务。控制台在机房中,这是计算机的固有部分,而终端可以是远程的。控制台还将包括硬件灯和开关,而不仅仅是文本输入和输出。我想说命令行是用户可以键入命令的区域,而shell是可以解释/服从该命令。术语“ shell”对于Unix派生类非常特殊。在Windows / DOS传统中,“命令行”更多。大型机上的等效语言通常称为“作业控制语言”。
#8 楼
尝试以用户为中心的简短答案:命令行-输入命令的行。通常,它用来告诉您需要在操作系统提供的文本模式窗口(命令行界面)中运行某些程序。
shell-操作系统运行的实际程序,用于处理您输入的内容。 。因此,名称为-非友好OS内核的用户友好外壳。它提供命令提示符,例如
command line
或$
,并运行自己的命令和应用程序。您始终可以通过>
程序进行操作,而不能直接在控制台或终端上进行操作。该窗口处理按键,知道它的宽度和高度。可以全屏显示。终端机-带有人类显示屏的某些设备,可以接受字符输入流并显示它们。没有有关高度或宽度(仅hack)或键盘按键的反馈给用户-只有字符正在向其移动。终端在此流中处理特殊序列,以使事物变色,清理屏幕并执行其他令人讨厌的事情。终端是易碎的,因为如果要传递给输出的文件包含特殊序列,很容易弄乱事情。它们在网络和设备调试接口中很流行,因为您只需要一个流就可以发送输出并控制输出设备,并且您可以在不进行初始化或创建窗口的情况下进行对话。串行控制台-是一个像终端一样处理输入流的控制台。
#9 楼
这是一个模糊的主题,因为这些术语非常含糊。我强烈建议您阅读本答案中提供的链接,这些链接也是本答案的来源。Shell是内核之上的层: />它解释用户输入的命令并进行处理。与用户不同,shell可以访问内核。用户只能通过使用Shell输入命令以及使用进程(即正在运行的程序)来访问内核。程序使用系统调用来访问内核功能。所有系统调用一起形成系统API。
第二个终端定义中给出了shell的示例。
终端有很多含义: (1)文本终端。这是显示监视器和键盘的组合。电缆将终端连接到计算机(通常是间接连接)。因为它位于电缆的末端,所以它被称为端子。这些终端通常在物理上与计算机分离,因为在过去,许多终端都连接到一台大型机/计算机,因此多个用户可以同时访问该计算机。
(2)终端窗口又称为终端仿真器。在Linux中,终端窗口是GUI窗口中包含的控制台的仿真。这是您在其中键入文本的CLI,而您使用的Shell会读取此输入。外壳的类型很多(例如bash,dash,ksh88)和终端(例如konsole,gnome)。
(3)有关伪终端的说明,请查看此内容。它是一对两个“设备文件”,用于在进程和终端仿真器之间进行通信。
控制台具有多种含义:
(1)包含计算机控件的仪表板。
(2)系统控制台,又称计算机控制台。这是显示监视器和连接到计算机的键盘的组合。这就是所谓的“文本终端”的同义词。有时,其他用户输入的外围设备(例如鼠标)也是控制台的一部分。
(3)覆盖全屏的命令行界面。这与终端窗口相反,终端窗口是一个GUI,右上角带有X以将其关闭。这是类Unix系统中CLI(命令行界面)的两种显示模式。类似于终端窗口,控制台也可以运行许多外壳。
通常,操作系统允许您在物理控制台上运行多个控制台(控制台定义2)。这些称为虚拟控制台,也称为虚拟终端,可以通过ctrl + alt + Fx组合进行访问。例如,如果要打开第三个虚拟控制台,请使用ctrl + alt + F3组合。它们,因为有许多不支持GUI的操作系统。另外,如果GUI停止响应,则控制台可能仍然可以工作。
#10 楼
如今,大多数终端严格来说都是终端仿真器。它是类UNIX系统工作中的一种角色,同时也是系统提供的基本接口。实际上,包括GUI在内的所有内容都基于它构建。
通俗地讲,“终端”也可以指具有星形拓扑的计算机网络中的端点。
控制台指的是(硬件)接口的终端。即有串行控制台,如今主要是虚拟控制台。
俗称“控制台”窗口的窗口是一个外壳,通过虚拟控制台连接到系统的终端。早在计算机昂贵的时候,一个设施可能已经有一台实际的计算机和几个通过串行电缆(“串行控制台”)连接到其上的终端。操作系统,操作等是在物理计算机上执行的,输入和输出是在控制台上进行的。
您可以通过按CTRL + ALT + F1(直到F6)在虚拟终端之间进行切换:如今,“瘦客户机”的概念又回到了集中大量资源并提供足够硬件以在实际工作场所提供最先进接口的方向。
shell是您在终端中看到的“引擎”。它提供了与系统本身的互操作性,并添加了诸如自动完成,变量等漂亮的功能。
它在使用系统调用的实际OS /内核与您之间来回转换。没有外壳程序的系统调用有点像编码
assembler
,而外壳程序至少可以为您提供C
。命令行是通过文本窗口交换输入和输出的方法。严格来讲,您键入的行是(当前)命令行。通常,该方法更正确地称为命令行界面或CLI。
内核
提供终端
终端通过控制台连接
控制台运行shell
通过命令行(界面)交换命令和输出
评论
内核不理解命令行指令,但是外壳不理解。 “内核理解的指令的核心框架”将是系统调用。 “基本UNIX命令行界面”是一个外壳程序,它与“不错的功能”之间没有任何区别。 “终端仿真器窗口”不是控制台。
–吉尔斯'所以-不再是邪恶的'
2014年8月4日在21:59
@吉尔斯调整。显然我自己在那里有些困惑。
–马克
2014年8月5日下午5:18
评论
(1/2)Agent Cool在大多数情况下是正确的,但鉴于此主题,他提供的Console的定义已过时。如果您关注的话,他的链接具有正确的信息。在他的链接上阅读整个定义。控制台被广泛使用以表示许多类似的东西,但最重要的是,它通常是指本地连接的人工输入和输出设备,例如键盘,显示器,甚至还有鼠标。(2/2)这似乎是一个学问点,但是作为经验丰富的systemadmin,我会告诉你事实并非如此。当系统出现问题并且似乎完全崩溃/关闭/脱机时,您应该检查系统的物理控制台以查看它是否仍在运行,而只是失去了网络连接。这个小细节可能会为您节省或花费数据,信息处理等费用。Pedantic,是的。但是很重要。
@ 0xSheepdog您可能希望将这些注释扩展为完整的答案(也包括其他术语的定义或说明),并以此形式发布。一个问题有多个答案也很不错(也许当它们以完全相同的方式传达相同的信息时除外)。我不确定为什么在本地检查机器的重要实践实际上依赖于知道/将其物理人机界面称为控制台,但是也许有人认为这对于与同事进行有效的交流或使用文档很重要。 (您可以在回答中加以说明。)
由于它们的密切关系(请参阅所有好的答案),这些术语有时会被同义词使用,这可能是您提出这个问题的原因。
请参阅:“终端”,“外壳”,“ tty”和“控制台”之间的确切区别是什么?在Unix&LinuxSE上。