这里写目录标题
- 🚀shell命令以及运行原理
🚀shell命令以及运行原理
Linux严格意义上说的是一个操作系统(如下图所示),我们称之为“核心(kernel)“ 。
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
那为什么不能直接使用kernel呢?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
这个命令行解释器背后有一个程序来获取我们输入的指令,由他来进行由用户–》操作系统,由操作系统–》内核的翻译工作。
两个方面:出于对操作系统本身的易用程度于安全。
如果直接对操作系统进行操控,对于一些不了解操作系统的人来说,可能会乱操作,导致操作系统崩溃等,当然,对于一般用户,也不知道怎么去使用,操作。
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
- shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。在本质上,图形接口与直接输入指令是一样的,只是图形化接口对于计算机或则其他用户更容易理解而已。
小情景帮助理解:
shell外可程序/图形化界面----媒婆 ,内核(操作系统)-----隔壁村美女(翠花),然后假如你是一个害羞的程序员/用户(张三)。
张三看上了隔壁村的美女,但是自己害羞,不好意思直接去给她说,现在呢,就找到了本村的王婆,张三将自己的诉求告诉了王婆,想让王婆去传达他的意思,去给翠花家提亲,所有的事情张三都直接跟媒婆沟通,由媒婆转达张三意思给她。然后王婆将结果再反馈给张三。
当张三将自己的诉求告诉了王婆—》在输入各种指令/或则点击图形化界面 对操作系统发出请求
如果这种请求是非法的,则不会执行。
总的来说,Shell命令的作用:
- 获取用户的输入(需求)
- 经过shell将指令处理后给操作系统
- 将指令的结果返回给用户
Shell的本质上是一个执行起来的程序(进程),系统运行期间,一直存在。
当用户输入的指令是一个有风险的指令或则是用户自定义的一个指令时,这时,shell都是通过创建子进程的方式来执行有风险的指令,子进程出问题与不出问题与Shell这个进程没有关系,这样出问题了也不要会导致这个命令行崩毁。这样Shell外壳程序就一直存在了。
注意:
每次进行Xshell登录的时候,OS都要给这个用户的当前登录重新启动一个shell/bash/…,当用户退出时,给他创建的就会被回收。
Shell只是一个外壳程序的统称,Shell于其他外壳程序的关系就类似于媒婆与王婆的关系;