【Linux系统】Shell命令运行及其原理
Linux严格意义上说的是⼀个操作系统我们称之为“核⼼kernel“ 但我们⼀般⽤⼾不能直接 使⽤kernel。⽽是通过kernel的“外壳”程序也就是所谓的shell来与kernel沟通。如何理解为什么不能直接使⽤kernel从技术⻆度Shell的最简单定义命令⾏解释器command Interpreter主要包含将使⽤者的命令翻译给核⼼kernel处理。同时将核⼼的处理结果翻译给使⽤者。【补充】为什么存在外壳程序1.方便用户操作2.外壳程序可以保护内核图像表示图像解说- 小王 用户- 如花 操作系统内核真正负责所有底层功能、处理请求的核心- 王婆 Shell外壳用户与内核之间唯一的中间交互层、命令中转站- 媒婆 外壳自带的交互接口- 小帅 内核已经绑定、优先服务的进程/资源小王用户很喜欢如花内核想要和如花在一起。但是用户无法直接接触内核中间必须经过中间人王婆外壳Shell来传递所有请求。于是小王把自己想要追求如花、和如花在一起的请求以命令的形式全部发给了王婆外壳。外壳王婆收到用户指令后再把这个请求转发给底层的如花内核去执行。可内核如花本身对小王完全没有兴趣内核处理请求直接失败、执行报错所以这次请求没有任何结果事情办不成。小王用户不死心再次找到外壳王婆重复发送请求你再帮我撮合一次。外壳王婆再次带着用户小王的请求前去访问内核如花。结果这次登门才发现如花早就和小帅在一起了小帅外形优秀、各方面条件都好二人十分般配。王婆外壳见状没有继续尝试请求内核立刻原路返回把自己看到的情况全部告诉了小王用户就说指定成不了了给用户下达错误信息的指令从而保护了操作系统。之后小王的父亲老王身为村里村长地位高、威望大出面给王婆施压交代道你再去帮忙说一次我儿子小王是真心喜欢如花。面对来自高权限用户的再次请求王婆Shell心里犯难不想自己承担事情成败的责任。于是王婆灵机一动自己开了一家婚介事务所招了两个实习生专门去帮忙传话、撮合。所有追求、沟通、交涉的事情全部交给这两位实习生去对接如花。 这样一来最后不管事情有没有成功、有没有被拒绝、出了任何问题、闹了任何结果责任全都归属于前去办事的实习生从头到尾都和王婆shell)本人没有任何关系。这里的实习生就是操作系统里的进程。Shell外壳王婆创建出子进程去执行用户的任务请求无论子进程运行成功、失败、报错、异常结束都不会影响到外壳 Shell 本身的运行Shell 自身完全不受牵连、不会崩无需负责。这就是进程与 Shell 外壳之间最核心的特性进程独立运行与父外壳相互隔离。问题一小王为什么不直接去呢因为用户小王不擅长和操作系统如花交流问题二Shell存在的价值是什么结局小王用户不擅长的问题还有保护操作系统如花【总结】普通用户不擅长去访问操作系统Shell外壳就是用来传递客户的需求的同时也可以保护操作系统。对⽐windows GUI我们操作windows 不是直接操作windows内核⽽是通过图形接⼝点击从 ⽽完成我们的操作⽐如进⼊D盘的操作我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序。shell 对于Linux有相同的作⽤主要是对我们的指令进⾏解析解析指令给Linux内核。反馈结果在通过内核运⾏出结果通过shell解析给⽤⼾。【补充】【思考】Shell和Bash有啥区别呢?简单来说shell是媒婆那么bash就是王婆(媒婆的名字shell是统称bash是一个具体的名字。bash也是许多Linux发行版的默认shell