【搬家】【工具软件】Terminal & Command 差异探讨——第一部分

孟光耀
2023-12-01

本文最早于 2014年1月5日于本人个人博客(http://mooowooo.tk)发表,现博客搬家至此,转载请注明出处。

一直不太明白 Linux/Unix 家族系统里的 Terminal 和 Windows 一贯以来使用的 Command命令行 有什么差异,正好今天周末有空又不太想看书,于是本着打发时间求真务实的精神,Google Wikipedia 一番检索,大概弄清楚了这个问题,在此记录汇总如下,方便以后查阅。

首先我明要明确一个问题:这一类程序到底叫什么?命令行?控制台?终端?Shell?对于我们用户来说,这些各式各样或黑或蓝或白的窗口都干着差不多的事情,无非就是吃进一行行字又吐出一行行字,但却没有一个统一的名字,这似乎有点说不过去。其实,这类程序,在计算机领域有一个专门的称呼,叫做 壳程序(Shell)。有兴趣的朋友可以参考 壳程序 的 Wikipedia 页面了解详细的信息,我在这里只做一个简单叙述——也算是考验自己是否真正理解

壳程序 简称 是指:提供用户使用界面的程序, 主要负责程序与用户的交互,它包括许多形式,如桌面环境、软件界面,网页等都可以算是一定程度上的 壳程序,但是通常来说,我们指的是 命令行解释器。与之相对的,是被我们称作 内核(Core) 的部分,这个部分主要负责处理程序的逻辑而不提供与用户的直接交互。

所以我们知道, 其实只是作为连接用户与 内核 之间的一道门,用户要完成任何动作,实际上都是由 接收到命令,然后向 内核 发起请求,内核 根据各种条件——这个展开讲就太复杂——将执行结果送给 ,再由 以一定的格式呈现给用户。

了解完了一个基本的情况,那么我们分别看看 Windows 的壳—— Command 和 Linux 的壳—— Terminal 有什么差异。

先说 Linux/Unix 家族系列好了,因为 Windows 这个家伙其实内里还有不少乾坤。

按照我的理解,对于 Linux/Unix 家族来讲,Terminal 只是对 Shell 的一个再次接管。对于整个系统来说,Shell 和 Core 都只有一个,但终端可以同时打开许多,我个人认为,这大概是从最早的分时操作系统遗留下来的一个习惯,为每个使用者提供一个终端,相互独立,但是均由一个 Shell 从各个终端接收命令并送给 Core 执行。所以我们题目里所说的 Terminal 并不是 壳程序 而是夹在 与用户之间的 终端程序。可以理解为壳的壳。那么现在又有问题出现了,对于 Linux/Unix 家族来讲,Bash``zsh``cshell这些名字里直接带有 shell 的东西又是什么呢?我的理解是:他们都是 Shell 环境。什么叫做 Shell 环境呢?简单的说:他们都是 Shell 解释器,只是提供了不同的交互环境,可能会有命令或者显示效果上的差别,但是均能完成与 Core 交互的任务。这也是为什么系统里不能同时设定多个 Shell 环境的原因——关于这点我不是十分确定,如果有问题,欢迎指正。更多关于 Unix Shell 的内容,请参见这个 Wikipedia 页面

那么说完了看是纷繁实则简单的 Linux/Unix 家族,暂时休息一下,Windows 的部分我们明天再讲。其实就是想偷懒了找什么借口!


 类似资料: