terminal、console、shell的区别(译文)

我发觉人们经常会问一些相似问题,而这些问题反映出他们对一些重要底层单词的潜在错误理解。

  • 我为什么要在PowerShell上使用Windows Terminal?
  • 我不需要为了使用bash而安装WSL,我用Cygwin。
  • 我可以配合PowerShell使用conemu,或者我需要使用Windows Terminal吗?

我们先弄清楚以下术语

TERMINAL

TERMINAL一词来自终止,表示它是通信过程的终止结束点或“TERMINATING”结束。当提到一个基于文本的环境时,经常会提到“哑巴终端”,在你面前的计算机只是输入和显示文本,而实际工作发生在大型机或大型计算机的另一端。

TTY或“远程打字机”(teletypewriter)是第一种终端。你的面前将会摆放一个像打字机一样的东西而不是一台屏幕。当你输入时,你会看到这些文字出现在一张纸上,并将该文本输入到计算机。当该计算机响应时,你将看到打字机自动地将回复信息打印在同样的纸上。

当我们在软件意义上提到终端时,我们指的是TTY或终端的字面软件版本,“Windows Terminal”就是这个,它非常擅长显示文本输出,接受输入并传递它。但终端并不聪明。它实际上不会处理你的输入,也不会查看你的文件或思考。

CONSOLE

20世纪中叶的人们会在客厅里摆放一件家具,叫做控制台或控制台柜。计算机上下文中的控制台是一个拥有屏幕和键盘的控制台或机柜,但是,它实际上是一个终端。从技术上讲,控制台是设备,终端成了控制台内的软件程序。

在软件世界中,"TERMINAL"和“CONSOLE”具有相同意义。

SHELL

SHELL是terminal将用户输入发送到的程序。SHELL生成输出并将其传回terminal以进行显示。以下是一些SHELL举例:

  • bash、fish、zsh、ksh、sh、tsh

  • PowerShell、pwsh

  • cmd、yori、4docs、command.com

这里有个对我们选择terminal重大意义的点-你的SHELL选择不能决定你对terminal应用的选择

另外:WSL和WSL2(Windows的Linux子系统)是一个运行在Windows10完整的本地Linux(或许多Linux).它们完整并且真实存在。WSL2提供了一个在Windows上运行的Linux内核。Cygwin不是一个Linux。Cygwin是GNU和开源工具集的大量集合,他们提供与Windows上的Linux类似的功能。它是一种模拟,将GNU工具集编译到Win32平台。这很好,但是要知道它们之间的区别。Cygwin可能会允许你运行bash shell脚本,但不会运行Apache、Docker或其他真正的ELF-二进制文件和Linux应用程序。

PSEUDO COSOLE、PSEUDO TERMINAL、PTY、PSEUDO TTY(ConRTY)

Pseudo Terminals是模拟terminal的仿真器或软件接口。它们看起来像上面那些terminal。*Nix系统长期以来具有伪终端(PTY)基础结构,现在Windows也作为其中伪控制台(ConPTY)。

Windows新的ConPTY接口是未来Windows console和terminal的未来。如果你为Windows选择一个第三方(非内建)的console应用程序,确定它支持ConPTY,相比那些老式console它会提供在使用复制黏贴更好的体验或者其他特殊功能。

简而言之

  • terminal = text input/output environment
  • console = physical terminal
  • shell = command line interpreter

参考地址

posted @ 2020-06-21 19:54  snicker  阅读(837)  评论(0编辑  收藏  举报