参考链接
终端
很久很久以前,终端这个概念是这样的:是一种硬件,是一种输入输出设备,用于和计算机交换信息。
终端的工作:用户通过终端输入命令,终端将命令传入计算机,执行后,并把结果输入到终端上显示。
从这个概念不难可以看到电传打印机符合这个概念:
但是现在计算机硬件一体化程度越来越高,硬件质量也越来越强,输入输出设备完全没必要单独用一个硬件和计算机进行交换信息了,取而代之使用软件终端和计算机进行交互信息。
这就是终端模拟器 (Terminal Emulator),也就是我们现在所讨论的终端。除了它不是硬件,它符合终端的概念和工作流程。
举个例子,下面这些软件都是终端:
- GNU/Linux:gnome-terminal、Konsole;
- macOS:Terminal.app、iTerm2;
- Windows:Win32 控制台、ConEmu 等。
shell
有了终端就足够了吗?Shell是用来做什么的?
终端的工作范围:接受输入,显示输出,图形化界面
而Shell的核心工作是操控计算机内核,即访问OS中某个具有一定功能,可以处理具体事务或包含一定内容的文件。
Shell包括:
- 图形化 shell(图形化的桌面环境),如Windows Explorer (文件管理器)、 Linux的桌面环境有:KDE、GNOME、CDE、 XFCE等。
- 命令行 shell。如bash 、sh 、csh 、ksh
切换Shell
输入cat /etc/shells
,可以查看本机上的所有Shell
总结
终端就是软件,是最外层的,shell = shell脚本语言解析器+编辑、外观等额外功能