我对这些术语感到困惑。shell、控制台和终端之间有什么区别?
答案1
在 Linux 世界中,从键盘用户的角度来看,它们看起来都一样。不同之处在于它们之间的交互方式。
这壳是实际处理命令并返回输出的程序。大多数 shell 还管理前台和后台进程、命令历史记录和命令行编辑。这些功能(以及更多功能)是 的标准配置bash
,它是现代 Linux 系统中最常见的 shell。
A终端指运行 shell 的包装程序。几十年前,这是一个物理设备,仅由显示器和键盘组成。随着 unix/linux 系统添加了更好的多处理和窗口系统,此终端概念被抽象为软件。现在您有以下程序Gnome 终端它将启动 Gnome 窗口环境中的一个窗口,并运行壳您可以在其中输入命令。
这安慰是一种特殊的终端。从历史上看,控制台是插入计算机上专用串行控制台端口的单个键盘和显示器,用于与操作系统进行低级直接通信。现代 Linux 系统提供虚拟控制台。这些可通过组合键访问(例如Alt+F1或Ctrl++ Alt;F1功能键不同控制台的编号)由 Linux 操作系统的低级处理——这意味着不需要安装和配置特殊服务即可运行。与控制台的交互也可以使用壳程序。
答案2
Shell 是一个程序,它会发出提示符并等待您输入命令。它会执行命令,然后打印另一个提示符。就像 Windows 中的 CMD 或 Unix 中的 Bash 一样。它可以在终端或控制台上运行。
控制台最初是一个物理的东西,一个控制面板。在计算机术语中,它通常表示在 GUI 启动之前或完成后看到的显示;有时您可以切换到显示它而不是 GUI。它是操作系统打印错误消息的地方。在多用户计算机上,它是实际连接到计算机的显示器。让您感到困惑的是,在 Windows 上,它还可以表示带有命令 shell 的窗口,即终端。
终端最初也是硬件,用于与计算机通信。如今它通常指带有命令行 (shell) 的窗口,该窗口可能出现在 GUI 窗口中或代替 GUI。
答案3
对于初学者
更详细的描述:https://askubuntu.com/a/506628/130518
- 终端 = 文本输入/输出环境
- 控制台 = 物理终端(你可以实际触摸到的东西)
- shell = 命令行解释器
我将在下文中描述最常见的用例。
一个终端用途shell。shell 无需终端即可运行。
与日常用品相关:
- 终端 -> 你家里的电视屏幕
- Shell -> 电视屏幕上运行的程序
换个角度来看:你的耳朵(输入)和嘴巴(输出)是声音的终端。你的大脑是使用特定外壳(处理)解释这些声音的机器。
终端是为我们人类服务的,因此我们可以从 shell 读取和写入数据。Shell 可以在不需要人工交互的后台进程(例如 cron 作业)中运行,因此不需要终端。
现存的几个终端示例:
- 命令提示符
- 瓜克
- gnome 终端
- 终结者
现存的几个 shell 示例:
- 猛击
- sh(Bourne shell)
- PowerShell [窗口]
- zsh(Z shell)
我只写了这两个通常是如何工作的,它们还有其他的工作方式,但那是针对更高级的用户的。
答案4
想想另一个背景,那就是开发。
即使你对开发没有很深的了解,你也可能知道一些基本知识,那就是:你编辑一个程序,把它提交给编译器或构建编译应用程序的解释器。
控制台就像你程序的编辑器;它帮助你写作但它实际上并不执行任何操作:完成后,将其发送给编译器。
您可以使用您喜欢的编辑器,vim、gedit、emacs、notepad++、Netbeans、eclise 等等,但最终它们只是不同的工具:如果您编写相同的程序,输出将是相同的。
在这个比喻中,shell 就是编译器。输入到终端的命令被发送到 shell,shell 会立即解释并执行它们。
因此,虽然终端只是 shell 的前端,但 shell 包含实际的语言,就像编译器一样。
显然,终端并不完全是一个文本编辑器,主要是因为它不会生成文件,而是将文本发送到底层 shell 并从中检索输出。
而且 shell 不是编译器,实际上它会解释你的命令并立即执行,而不是构建可执行文件。
尽管差别很大,我发现这个比喻对理解这个想法很有帮助。