贝壳?龟壳?手机壳?究竟啥是Linux系统的壳?

小豆丁:老张老张!有个问题要问你,你干嘛呢?

小豆丁:老张!你竟然在打游戏!

小豆丁:哟~用的露娜啊!秀啊!

小豆丁:哟~0-18啊,哈哈哈!

小豆丁:哈哈,你的队友都在让你别送了!

画外音:defeat!嘭~~~

小豆丁:额...老张...你别用那种眼神看着我呗...我只是想问个问题...

老张:问!

小豆丁:啥事壳啊?

老张:贝壳!龟壳!手机壳!都是壳!

小豆丁:替你上王者!干不干!

老张:成交!

老张:你要问的是Linux系统中的壳吧,也就是shell?

小豆丁:嗯呐!我有点不理解这个shell。

老张:说来话长啊,想要细致理解这个壳(shell),那就要从计算机硬件和操作系统说起。

小豆丁:说吧,我记着!

老张:我们都知道计算机是有各种硬件组成的,有磁盘、内存条、CPU、声卡、显卡等,那么你知道这些硬件设备是由谁控制的吗?

小豆丁:是操作系统吗?

老张:没错,就是操作系统,我们可以把操作系统看成一款特别牛逼的软件,这款软件控制着我们电脑的各种硬件资源。

小豆丁:所以说操作系统很重要!

老张:当我们操作电脑时,我们没办法直接控制电脑的硬件,只能把我们的想法告诉操作系统,由操作系统间接的帮助我们完成相关的硬件控制。而且操作系统本身还提供了其他的功能,比如内存管理,进程控制能。

小豆丁:这个我能理解,我们想要做什么事情只能通过操作系统完成。那和shell有什么关系啊?

老张:关系大了,shell就是我们用户和操作系统之间进行交互的媒介!

小豆丁:媒介?快具体说说呗!

老张:举个例子,你就能理解了,我们在Linux系统中,通过各种各样的命令完成相关的功能操作,比如ls、cd、mkdir等,用户这些命令并不是直接给操作系统的,而是先给到shell,经过shell的解释翻译后,再传给操作系统。

小豆丁:哦,我懂了,shell就相当于一个中间人的角色,我们用户把想法告诉shell,shell在传给系统内核。

老张:没错,不管哪种shell,主要功能都是解释使用者输入的相关命令,起到一个解释传递的作用。

小豆丁:可是我们的相关命令操作,为什么一定要先传给shell呢?直接给操作系统内核不行吗?

老张:如果直接给内核,这样会很危险!因为操作系统非常非常的重要,如果我们直接控制操作系统的化,一旦出现什么纰漏,很可能直接造成操作系统瘫痪,所以在用户和操作系统之间加了一层shell进行过度,通过shell过滤掉用户危险和错误的操作,保护操作系统的正常运行。

小豆丁:哦,我明白了!

老张:除了解释翻译使用者的命令外,shell还提供了个人化的使用者环境,比如说窗口特征啊,搜索路径啊,权限啊,提示符啊等等。

小豆丁:还有个问题,就是这个shell长啥样啊???

老张:额...这个还真的很难描述它的样子。可以把shell理解成一款软件,但是这款软件却并不像聊天软件或者视频软件一样,有具体的图形界面窗口。举个例子,当我们启动终端的候,我们看到光标在提示符后闪烁,实际上此时shell就已经随着终端启动了。闪烁的光标就是在等着我们用户输入相关的指令呢。

小豆丁:哦,是这样啊,原来shell是一个这么抽象的软件啊,怪不得我一直不理解它究竟是什么样子,工作起来还神神秘秘的。

老张:这回懂了吧!

小豆丁:懂了,shell是用户和操作系统交互的媒介,它能够保护操作系统的安全运行!

老张:聪明!诺!手机给你,替我上王者吧,刚才说好的!

小豆丁:没问题,你现在啥段位啊?

老张:青铜!

小豆丁:!!!

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190817A0ORRW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券