小豆丁:老张老张!有个问题要问你,你干嘛呢?
小豆丁:老张!你竟然在打游戏!
小豆丁:哟~用的露娜啊!秀啊!
小豆丁:哟~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是用户和操作系统交互的媒介,它能够保护操作系统的安全运行!
老张:聪明!诺!手机给你,替我上王者吧,刚才说好的!
小豆丁:没问题,你现在啥段位啊?
老张:青铜!
小豆丁:!!!
领取专属 10元无门槛券
私享最新 技术干货