Terminal v/s tty v/s console v/s shell 的区别
这篇 stackexchange 问答回答了 terminal, tty, console, shell 这些名词的区别。简单来说,terminal 是文本输入输出的环境,tty 是 terminal 的行话,shell 是命令行解释器,console 是 terminal 的物理实体。当然,从词源上讲,terminal 是电线的终端,shell 是龟壳,tty 是个奇怪的缩写,console 是一种控制台或者仪表盘。
这些名词会让人觉得混淆的地方在于,他们都和我们操纵电脑的装置有关系。tty 之所以有这种缩写,是因为早期 Unix 是通过一种叫 teletypewriter 的远程打印装置输入命令。至于现在,这个名词还保留在系统里,不过已经只是作为 /dev/tty
这样的设备文件还存在着。与之相关联的,是被我们称为 pseudo-tty,即伪终端的东西,也叫 terminal emulator (终端模拟器)。我们现在使用的 Xterm,iTerm2 等就都是伪终端。
如果在物理实体上,我们将键盘带屏幕的装置,称为 console。一般系统只有连上一个 console,但会有多个 terminal 相连。至于 Shell,则是一个程序,在用户登录以后通过 controlling tty 让用户可以启动各种程序。