什么是 Shell
这应该是个蛮有趣的话题:『什么是 Shell ?』相信只要摸过电脑,对于作业系统(不论是 Linux 、 Unix 或者是 Windows )有点概念的朋友们大多听过这个名词,因为只要有『作业系统』那么就离不开 Shell 这个东西。不过,在讨论 Shell 之前,我们先来了解一下电脑的运作状况吧!举个例子来说:当你要电脑传输出来『音乐』的时候,你的电脑需要什么东西呢?
1. 当然就是需要你的硬体有『音效卡晶片』这个硬体配备,否则怎么会有声音;
2. 作业系统的核心可以支援这个晶片组,当然还需要提供晶片的驱动程式啰;
3. 需要使用者(就是你)输入发生声音的指令啰!
这就是基本的一个输出声音的需要的步骤!那么也就是说,你必须要『输入』一个指令之后,『硬体』才会透过你下达的指令来工作!嘿嘿!那么硬体如何知道你下达的指令呢?那就是 kernel (核心)的控制工作了!了解了吗?没错!也就是说,我们必须要透过『 Shell 』将我们输入的指令与 Kernel 沟通,好让 Kernel 可以控制硬体来正确无误的工作!基本上,我们可以透过底下这两张图来说明一下:
基本上,替我们工作的是『硬体』,而控制硬体的是『核心』,再来,我们使用者乃是利用『Shell』控制一些 kernel 提供的 『工具 Utility』来操控硬体替我们正确的工作。再举个例子来说,当我们使用 shell 的功能,输入『 cd /』来切换目录时, shell 便利用 kernel 提供的 cd 工具来告诉 kernel 转换硬碟的工作目录到 / 当中,然后硬碟就根据 kernel 的掌控而切换到 / 当中啰!这个就是 Shell 的主要功能啰!再进一步来说,由于 kernel 听不懂人类的语言,而人类也没有办法直接记得 kernel 的语言,所以两者的沟通就得藉由 shell 来支援了!
以字面上的意思来说, kernel 是『核心』的意思,而 Shell 是『壳』的意思,呵呵!也就是说, shell 是最外头的咚咚!而 kernel 乃是最内层的的咚咚啦!核心是作业系统的***层的东西!这个核心里头包括了各种的支援硬体的工具!当然啰,如果你的硬体太新,而你的 kernel 并没有支援的话,那么很抱歉,你的 Shell 能力再怎么强,也没有办法使硬体工作的!这样可以了解了吗?呵呵!没错!使电脑主机工作的正是核心的任务,但是操作核心来替使用者工作的,却是 shell 喔!因此,有时候你的 shell 搞了老半天,硬体却不能工作的时候,请注意,您的『核心』是否正确呢?阿!扯远了!这是 kernel 章节才要说的东西~~
【编辑推荐】