Linux严格意义上说的是一个操作系统,我们称之为“核心 “ ,但我们一般用户,不能直接使用核心。
而是通过核心的“外壳”程序,也就是所谓的shell。shell是所有外壳程序的统称
我们可以用下面的关系图来表示:
有小伙伴会有疑问:作为Linux系统的使用者,我们为什么不直接向操作系统交互,反而要通过shell外壳这一媒介呢?
我们先来引入一个生动的故事:
阶段一:
从前有个村庄,村里村长有一个儿子——小李,他仰慕儿时的女玩伴——小花,一天,小李想对小花提出交往的请求,但奈何小李性格腼腆,不敢和小花当面交流,因此就找来了村里的媒婆——王姨。
阶段二:
王姨听了小李的诉求后就去找小花商量,但是小花却对小李不感兴趣,随便找了个理由搪塞了过去。小李从王姨那听说了后仍不死心,希望王姨再争取一下。当王姨第二次来到小花家时,远远地便望见小花正在和另一个男生还有她的父母正坐一桌吃饭,有声有笑、其乐融融,这时王姨便意识到这个时候再去找小花便是一个不明智的危险的行为——小花已经名花有主,再去说媒就会招人嫌。但小李仍旧不死心,希望王姨想想办法。这时王姨就苦恼了,既不能得罪了村长的儿子,又不能硬找已经有对象的小花,砸自家招牌,怎么办呢?
阶段三:
王姨心生一计,她开了一个事务招待所,并招揽了大量实习生。她让实习生去做那些成功率低的媒事,而自己只做成功率高的。这样就算实习生失败了,也不会影响到自己的声誉,同时也可以用“实习生经验不足”的理由来对付求媒人。两全其美。
看完了这个故事,我们可以将故事中的小花比作是Linux中的内核,将小李比作是不断向内核操作系统发送请求的用户,而王姨就是沟通内核和用户的shell外壳。
即:小花 -> Linux内核 小李 -> 用户 王姨 -> shell外壳
做完类比,我们再从易用程度和安全两个角度来讨论为什么要有shell外壳
这个问题:
shell是一切外壳程序的统称
centOS
和ubuntu
中,这个外壳程序一般叫做bash
:将用户的命令进行解析,并传达给内核;同时将内核的反馈结果进行解析在返回给用户。图形化界面
:通过鼠标双击、右键、左键等一些列操作实现于内核的交互。shell外壳的子进程
在学习Linux的过程中,我们不免会发出疑问,下图的字符串到底是什么?
实际上,上面那一串等待我们输入指令的字符串就叫做命令行解释器
而命令行解释器的背后有一个程序,它用来接收用户输入的指令,并执行由用户到内核,再由内核返回到用户的翻译工作
这个程序就叫做shell外壳程序
经过本次的学习,我们可以做出如下的总结:
- shell外壳程序是一切外壳程序的统称
- shell外壳程序是连接用户和系统内核间的桥梁
- shell外壳在方便用户和内核交互的同时也在一定程度上保护了内核的安全