shell、terminal、console区别和联系
这些概念之所以存在其实是历史传承的结果,想要理解本质区别,需要从计算机发展史入手去了解。
首先,总的来说
在以前,终端termial 和 控制台console 都是具体的硬件设备,shell是软件程序
目前,终端termial 和 控制台console 基本已经不再细分且均为软件程序,shell仍然为软件程序
无论以前还是现在,终端terminal 和 控制台console 都是通过shell程序负责解释执行用户的指令
从以前到现在,未曾改变的是shell,它一直都是解释用户命令的软件程序,常见的有
- Bash(Bourne Again SHell):Bash是Linux和macOS上默认的shell,也是最常用的shell之一。
- sh(Bourne Shell):Bourne Shell是Unix系统中最早的shell之一,它提供了基本的命令解释和控制结构。
- csh(C Shell):C Shell是一个类似于C语言语法的shell,提供了更多的交互式特性和命令别名功能。
- ksh(Korn Shell):Korn Shell是由AT&T Bell实验室的David Korn开发的一种强大的Unix shell,它是sh的增强版本,提供了更多的功能和改进的脚本编程能力。
- tcsh(TENEX C Shell):tcsh是csh的扩展版本,提供了更多的功能和命令历史记录。
- zsh(Z Shell):zsh是一个功能强大的shell,提供了自动补全、命令别名、主题定制等高级功能。
在以前,terminal 和 console 均是控制计算机的硬件设备,他们二者的关系是,一台多任务多用户主机具有一个最高权限的console,有多个控制设备terminal,因此console可以看作是主机的基本设备,而terminal可以看作主机的附加设备
随着虚拟化的发展,控制设备增多,控制设备就从硬件设备转变为了软件程序,由程序负责模拟控制设备,此时terminal和console的区别就逐渐被淡化了(Linux中二者等价,Unix中仍做区别),cmd.exe,powershell.exe,xshell,terminal.app都属于终端模拟器/仿真器
在shell、terminal 和 console 之外,还会看到一个 tty 的概念,tty是电传打字机 Teletypewriter 的缩写,最初采用的主机设备是 PDP-11(DEC 公司制造的小型计算机),终端/控制台设备是 Teletype ASR33,这个设备就被称之为电传打字机,也就是tty,所以tty也可以看为是和终端等价的一个名词