Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
要理解shell外壳,要知道一下三点。
为什么会有shell外壳?
shell外壳是什么?
shell外壳怎么工作?
我们来举个简单的例子来解释:张三是个刚大学毕业的程序员,老大不小,到了结婚的年纪了,对隔壁家的如花暗恋已久。由于大学四年很少接触异性,导致张三一见异性就害怕紧张、不敢说话,这时就请来王媒婆,让她帮助联系如花。
在这里张三就相当于linux的用户,媒婆就相当于shell外壳,而如花就相当于操作系统。
正是因为张三不善于与如花打交道,所以才请来王婆帮忙。正是因为Linux有操作门槛,所以需要shell来帮助程序员使用Linux。
王婆第一次去如花家给张三说媒,但是如花却不愿意,王婆回去告诉张三如花的心意,但张三不死心。过两天又让王婆去,结果王婆还没进门,就发现李四在如花家中吃饭,这时候王婆就懂了。
媒婆的角色就相当于shell,起到了传话的作用。shell就是命令行解释器,将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。
此时王婆已经了解到如花的心意,知道张三的请求是不可能的。
shell在面对非法请求的时候是会拒绝的,对于用户来说起到了告知的作用,同时对于内核起到了保护的作用(shell外壳知道命令非法直接拒绝,避免“骚扰”内核)。
王婆越做越大,十里八乡,人尽皆知。这时王婆开了一家“王婆婚介所公司”,同时在boss直聘上找实习生。
王婆不好意思直接去告诉张三如花的心意,但是由于张三的爹是村长,只好让实习生去告诉张三。这样事情即使办砸了,王婆既能给村长一个交代就说,实习生业务能力不强,又能使自己不受牵连。
shell --- 本质上是一个执行起来的程序(进程),从系统启动一直存在。就像相当于一个死循环。shell 启动后就会给每一个用户一个bash(相当于王婆),如果遇到有风险的事情,就让bash创建子进程去完成,即使挂掉了,也不会影响bash。