今天做一个感性的认识来,用一个生活的例子。
你生活在有一条村子里面,在村的东边就是王婆,王婆呢?她主要做什么呢啊?她在村儿里面呢,也不种地啊,那她干什么呢?他主要做帮别人进行婚嫁论娶,做牵线工作,俗称媒婆。
你呢?住在你家西边。
将来毕业了啊,然后呢?找到了一份儿非常好的工作啊。比如说你叫张三,然后呢?你有一个老爹啊,那么你这个老爹呢?是一个村长
你也算是一个啊啊官二代啊啊,曾经呢那么一篇我的村长父亲呢?啊,那么在村里面呢,就相当于是啊,被大家所熟知啊,然后呢,再上那个。嗯,上学的时候呢,因为你自己的优异成绩考上大学,后来找工作找得非常好,你爹呢?很高兴回家之后呢,就给你说了一句话说。张三,你看你现在工作也找到了,毕业呢也稳定了,下面呢?那么是不是可以给你去找个女朋友啊?
我还真有这个想法啊。其他人我不喜欢,我小学同桌啊,叫做如花,也就是我们家隔壁啊,那么我比较喜欢这个姑娘。但是呢啊,张三这名同学典型的程序员啊,稍微内向一点点啊,虽然内心里心猿意马。那么或者内心早已翻江倒海,但其实呢啊。
依旧很难以出口啊,去去找人小姑娘去说啊。自己除了躲在屏幕前噼里啪啦写一大堆大代码,然后呢,那么或者是呃评论一大批啊。就是可能觉得啊,自己很牛逼,闪闪的,那么各种的评论啊,反正就是俗称键盘侠,但是一旦现实生活中去跟别人聊。就感觉自己比比人家小姑娘还脸红啊,反正就是不善于啊,和人家女孩儿打交道啊。
张三是个程序员,他非常善于和电脑打交道,但特别不善于和如花这个小姑娘打交道。所以呢,就给他爹说说,爹不行,我现在说话各方面跟你说话,我觉得啊。我觉得我还很能言善辩啊啊,当代版张仪,反正就是但是一一跟小姑娘说话,我觉得我舌头就像打了结。反正说不出口,你老爹就跟你说,别担心啊,我给你介绍个人,这个人就是你的王婆啊,她呢?在方圆十公里以内啊。算做的是一个垄断生意啊,然后方圆十公里以内的所有婚嫁论娶基本都是你王婆说的啊,我让她来我们家。所以呢,王婆听到了这个村长的指令,然后呢,就跑到了村长家。
然后张三啊,给王婆说你有什么要求,张三说啊,我没什么要求。我就想让你帮我去隔壁家和如花说一声,说能不能跟我处啊,反正我挺喜欢他的,我现在工作也挺好。我爸也是村长啊,然后王婆说得了啊,然后王婆就跑去如花家
如花也刚好在,王婆就把你说的话,和如花说了 就是在转述的过程之中啊,一顿的添油加醋啊,说你什么高富帅啦,然后如花呢,一听,唉,这不就是我隔壁家的张三吗?以前同桌呀,唉,那小男生我不喜欢他啊,我觉得这个小男生一直都。反正就是没感觉啊,然后呢,就给王波说我不喜欢他,不要让他来找我。所以呢,王婆呢,听到这话,然后王婆知道嗯,行,我知道了怎么办呢?王婆就把这句话转述给到了给张三。
人就是觉得和你不合适啊,你是个好人,然后呢,以前还帮过他啊,借个橡皮啊。什么削个铅笔之类的人,觉得你挺好的,但确实就是不合适啊,你这样啊,王婆,要不然给你再重新再给你。再给你找一个啊。那么此时啊,你呢?心灰意冷啊,坐在一旁不说话了,那么在这个过程之中啊,我们就完成了一次。叫做命令解释的工作啊,
张三就是用户,如花就是操作系统。
那么为什么我们张三,有指令我们不直接去找如花?为什么我们用户有指令?为什么不直接找操作系统?让操作系统帮我去执行呢?答案是,那么因为人。不善于直接和操作系统打交道,人不善于啊和叫做操作系统打交道。就好比张三并不善于和如花聊天一般。说不出口,很多话动不动十句说完九句错啊,那么还有一句其实啊,自己都不知道自己说的是啥,反正就是和别人聊不来。那么不善于和操作系统打交道, 所以就有了一个人,这个人叫王婆。
那么王婆呢?她呢?做什么呢?她呢?其中呢?非常善于和人打交道,所以张三的请求交给她。然后呢?那么如花的请求,如花最张三的请求,王婆王婆把请求交给如花,如花再把请求交给再把响应给王婆,王婆再把响应给张三。
虽然我们每一个人都和,比如张三和如花不能直接沟通,就如同我们的用户和操作系统,不能直接交互。所以呢,王婆在中间就起着一个我们啊,就是啊,传递信息的一个作用啊,你见了人家如花紧张,你总不能见到。王婆,你也紧张吧 。
王婆呢,也很能精准的捕捉到你的需求啊,王婆本身其实就相当于帮我们做了一个叫做转介绍,相当于给我们重新包装,然后呢,再交给如花如花,把结果再交给王婆,王婆。再转,封装一下,或者再给我们做一个,我们的包装再交给你。
对我们来讲,那么王婆存在的是很有意义的,所以在用户和操作系统之间。我们就需要存在另一层软件层叫做shell这个shell,我们称之为叫做命令行解释器。
将来你自己在命令行上操作时,你的所有指令不是直接交给操作系统的。而是先交给shell,再由shell交给操作系统,
所以shell和操作系统的关系是下面图这样子的,那么我们把包裹在外层的这一层软件,我们叫做shell。
用户直接去操作、直接访问操作系统,那么其实是不行的。没有办法直接去访问操作系统,所以用户怎么办呢?那么用户直接去访问shell,再由shell帮我们去和操作系统交互。操作系统把结果再交还给shell shell,再交给我们对应的用户,其中这个就叫做我们的shell的一个基本原理
那么在如花家的隔壁啊,有一个高富帅叫。叫做李四。李四的爸呢?可是你们村的首富啊。嗯。就相当于你村儿的有钱人嘛,就是。如花呢,那么他不喜欢张三啊,但他非常喜欢李四。李四呢,也非常喜欢如花,然后两个人呢,情投意合啊,
当你坐在沙发边上沉默不语,你在想什么呢啊?其实你并没有放弃,然后呢?你就在想说,那既然一次不行,那我还想再尝试一次,所以你就冷冰冰的给王婆说。王婆啊,我还是觉得如花非常好,虽然如花拒绝了我啊,但是你给如花再说一说。你看我还有没有机会,我们可以先不做男女朋友啊,我们可以从朋友做起啊。所以呢,你能不能再给如花去说一说啊,然后呢,看我还有没有机会?王婆看着你啊,渴望的眼神,然后王婆说,行吧,那么那么这个时候呢?王婆就又跑到如花家里。可是在如在王婆走到如花家里的时候啊,那么王婆那么就已经看到了如花和李四人家两个已经是一对儿了啊,相当于人家两个呢,父母都见过面了。人家两个现在已经开始谈婚论嫁了啊。
王婆就想,这个事儿谈不成了,因为人家如花,已经心有所属了。所以呢,王婆就简单的给如花说了说,然后还没等如花开口,李四就说你去回去告诉上三,他没戏啊。然后就让他别想了,所以那么果断的就拒绝掉了,那么王婆包括你的请求,所以这个时候呢,当你再王婆回来的时候,然后给你说张三。你还是忘了吧啊,如花已经不可能了啊,就是让王婆再给你介绍几个,王婆手里面资源还都挺好的。方圆十公里以内啊,大大小小啊,谁家的姑娘好我都知道啊,适合过日子的,我也知道很多,不要在一棵歪脖树上吊死了。
你说我不行啊,我就要如花,我不说算了。你还是别啊,然后呢?你最后和就是不断的请求王婆,王婆就是不去了。去了也没用啊,人家已经有男朋友了啊,怎么办呢?所以你随后的后续的所有的请求,那么在王婆这里直接就不让你去了。相当于王婆压根就不再把最近的请求转发给如花啊,然后也就不再打扰如花了,那么在王婆这里就变相的就拦截了你的所有的请求。
就相当于什么呢?在刚刚的故事当中,王婆呢?她拒绝了后续张三的所有的非法请求。其实变相的也就不再和如花,有任何交互。那么换言之,它是变相的保护了如花啊!同学们,那么当用户输入指令的时候,如果有一批的非法指令。这批指令非法的时候呢?那么我们的shell就直接拒绝掉你。
这个指令压根儿就没有传递到操作系统里,说明什么呢?说明shell呢?它拒绝掉用户的非法请求。其实本质上也是变相的保护操作系统。换言之,所以shell,为什么存在第一个,理由叫。它解决用户和操作系统,沟通的成本的问题,我不善于和计算机沟通,那怎么办呢?那给你搞个软件层,所以第二个问题叫变相的保护操作系统。
所以因为有这样的软件的层的含义呢?只要到操作系统的,一定是合法请求啊,或者叫做在是要看来是合法请求,比如说王婆呢最终。那么,他跑到了李四,王五,赵六前妻家,他只要跑人家里面,一定是他认为啊,那么那么请求方发过来的指令是合法的。那么这样的话就可以把操作系统从一大堆的差错处理的泥潭当中直接剥离出来,操作系统你只需要处理正确的事情。
你啊,非常偏执。反正你就是王婆再怎么给你说不可能,你还是揪着王婆在说王婆,你还是给我说一说吧。你别忘了,我爸可是村长。软的不行,你就来硬的对吧?所以呢,王婆一看你这压根儿就没戏啊,人家如花一个方面不喜欢你,再叠加上人家已经有男朋友,你还让我去。你不是为难我吗?我老太太七八十岁了,还没见过你这样的人啊。
你现在说,你爸是村长好。行吧,那么这个时候呢?王婆说,行,那我回去考虑考虑啊,明天给你答复。如果你是王婆,那么你接下来该怎么应对这种局面呢?
一方面,这种情况是根本不可能就相当于怎么执行啊,怎么去说都不可能成功啊,另一方面,这个人还一直让我去说。你想一想,王婆作为一个媒婆。他今天找到了如花给如花说第一次没说成,第二次没说成,作为王婆来讲。方圆十里以内,它可是那么说媒介的头牌儿。连续给同样张三一个人如花像,说如花说了十几次,如果都没有成功的话。你说方圆十里的青年才俊啊,还会不会认我这个王婆的门?说白了就我牌子就倒了。说了半天,最后给人说这么长时间,最后还没说成,我总不能到处宣言是村长强迫我去的。
所以作为一个王婆来讲啊,怎么样机智的解决这个问题呢啊?王婆就想,反正这个事儿必然失败。或者有一丁点可能成功,但是成本特别高。但是如果我长时间就说啊,说成了还好说,失败了影响我,我的口碑怎么办呢?所以王婆呢?那么当天晚上连夜就在自己。门口贴了张纸,叫做招聘启事啊,王婆婚介所那么要招聘那么很多实习生。什么赵六,田七啊,什么乱七八糟的人,然后全部都过来面试了。招了一大批实习生啊。
然后第二天呢,那么去张三家的时候,王婆不去了。王婆给张村长打个电话,说村长,我这边儿事儿啊,我知道咱儿子的事儿比比较重要一些啊,我这边儿因为不可抗拒的原因,我去不了了。我派了一个得力干将啊,这个人能力业务能力特别强,你让他去试。所以呢,王婆派了个实习生啊,
他创建了一个实习生,让实习生帮张三去说说。说没当然,结果就注定失败了,对吧?失败了之后呢?那么王婆在家里悠哉悠哉的喝着茶啊,看着电视,嗑着瓜子儿啊,然后呢,就听到了实习生打来的电话啊,哭着说啊,我我说说砸了怎么办?王波说没关系啊,你回来吧,然后呢,让我来跟村长再沟通一下,或者跟张三沟通一下。然后呢?那么接下来呢?村长质问王婆说,你怎么没给我说成,怎么怎么样?反正没给成,村长很生气。王婆说,村长,你别担心啊,我派的这个人业务能力很强,但毕竟是个新人啊,我再给你派个业务能力强的。然后就把二号实习生派过去。
反正你非得让我说十几次,我总是给你派过去实习生,你让我去好吧,那我总是告诉你,我没有时间啊,反正有一些。很冠冕堂皇的理由,总之你现在让我说再多没关系,我都给你实习生实习生注定失败,但不影响为什么,因为我的牌子倒不了。对外宣称的时候都是王婆,没有亲自出马派的是实习生啊,这样的话既把自己保住了,又把村长的面子也挂住了,然然后把张三的情绪也疏导了。
在系统中执行命令,通过派生子进程的方式执行用户指令,而shell本身,并不执行对应的指令,一般而言。
shell外壳可是我们linux和用户交互的唯一的方式。如果是要外壳,因为你自己的程序出现问题而导致外壳挂掉了,那么此时操作系统便无法被用户所使用。所以sell外壳就说所有的指令的解释我不做,我创建个子进程,让子进程去做。这就叫做shell的运行原理好了。
linux一般有两种说法,之谈操作系统,不加上外壳叫做linux内核,加上外壳也叫linuxlinux它有宏观的理解,这叫做linux叫做Linux内核加外壳程序。还有一个微观的理解呢,就是只谈linux的时候就谈的是Linux内核,所以啊,你们手机上为什么能装linux。
所以平时在lWINDOWS下拿鼠标点来点去?拿鼠标点来点去,拖拽,然后最小化,然后什么最大化,然后呢叉掉你操作这些窗口的时候,最终所有的窗口其实,它是解释完之后直接调的是操作系统提供的接口,然后完成这个工作,shell就是WINDOWS图形化界面是兄弟关系啊,不存在把图形界面解释成指定操作,再由指定操作交给内核。不存在好吧,是直接图形界面,下面就是操作系统好。
我们的手机上的操作系统底层也说linux。然后那安卓是什么鬼?我们经常说我们的操作系统叫安卓,可不叫linux呀啊,安卓你可以理解成安卓,本质上它其实。内核还是Linux内核,那么安卓的那一套图形界面啊,就是给你们呈现的各种展示方式。其中可以理解成很多人把类似内核拿过去,用来对软件做管理,然后在外壳程序当中。写一套手机端的图形界面库,然后呢,供别人做二次开发,这就叫做安卓好。
你经常会听说我们是基于安卓做深度定制,深度定制化同学们所谓的深度定制化啊,说白了其实就是拿着安卓的这一套库。把这条裤改一改啊,什么颜色改一改,布局改一改是圆角的还是方角的啊?差最大化左上角是在左上角还是右上角?然后呢?它那个效率代码里面有没有一些效率太低的啊?然后怎么怎么样?说白了,其实就是把人家的外科程序再改一改,所以你现在能理解,所以我们现在市面上很多操作系统,为什么有些操作系统直接把linux拿过去用了,其实他们要么就把Linux内核拿过去,外壳自己开发,图形渐变式的啊,要么呢,就是把Linux内核拿过去,然后再把这个外壳程序再做一个修补,无非就外壳程序大家设计的不一样,并且把这个外壳当中配的。好多指令啦,工具啦,设置的可能更贴近企业一些啊,让我们用起来更舒服一些,仅此而已啊。
我们用的外壳程序叫做bash啊。好那么bash呢,是外壳程序一个具体的名字。