【Linux】Shell 命令以及运行原理

Shell 命令以及运行原理

当用户登录 Linux 系统的时候,系统会给用户创建一个新的进程,一般叫做 bash(命令行解释器)。
Linux 严格意义上说的是一个操作系统,我们称之为 "核心( kernel )" ,但对于我们一般用户,是不能直接使用 kernel 的 。而是通过 kernel 的 " 外壳 " 程序,也就是所谓的 S hell ,来与 kernel 进行 沟通。


如何理解?为什么不能直接使用 kernel?


从技术角度,Shell 的最简单定义:命令行解释器( command Interpreter )主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

对比 W indows GUI ,我们操作 W indows 不是直接操作 W indows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入 D 盘的操作,我们通常是双击 D 盘盘符 或者运行起来一个应用程序)。
Shell 对于 Linux ,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过 Shell 解析给用户。


张三是一个闷骚且害羞的程序员,不擅长和女生交往,Shell 就像媒婆,操作系统内核就相当于村里漂亮且让张三感到心动的一位女生名叫如花。
张三看上了她,但是又不好意思直接去向她表白,于是张三就让家人找媒婆去帮他提亲,所有的事情张三都直接跟媒婆沟通,由媒婆(Shell)转达他的意思给如花,而家人找到的媒婆她姓王,所以大家都叫它王婆(bash),王婆就对应我们常使用的 bash。
如花拒绝了他的提亲,就相当于用户给操作系统下达的命令操作系统做出了反馈,然后由王婆将反馈告知张三。张三得知了这个消息,非常不甘心,就让王婆帮他继续去说,王婆又去了,但是当王婆要进如花家的门时,她看到了小花竟和李四正手拉手,双方家长也见了面,王婆看到这就知道张三的事铁定成不了了,为了防止张三做出过激行为,王婆就直接拒绝了张三的请求。
那么王婆没有将请求送到小花家,就是自动做出判断拒绝了张三的请求,也就相当于 Shell 阻止了用户下达的危险指令,从而间接的保护了操作系统。
张三的父亲是村长,他特意交代把这件事情交给王婆,让她去办了,王婆迫于张三村长父亲的压力,同时也不想砸了自己的招牌,王婆得想个办法解决这个棘手的问题。于是她想到通过招聘实习生,每当张三要再次去小花家说媒的时候王婆就派一个实习生过去,无论实习生最终是谈成功了还是失败了都与我王婆无关,只要有去办这件事就行。
那么这里王婆的这个办法就相当于 Shell 创建子进程去执行用户命令,无论是执行失败还是成功都不会影响 Shell 进程。

张三(用户)为什么不直接去找小花(操作系统内核)呢?

因为不擅长。

媒婆(Shell)存在的价值是什么?

解决张三 "不擅长" 的问题以及保护如花(操作系统内核)。


【结论】

普通用户不擅长直接去访问操作系统,Shell 外壳就是用来将用户的需求传递给操作系统,同时也可以保护操作系统(假如用户有非法操作)。

【思考】

Shell VS Bash,这两者有什么区别呢?

Shell 是对所有外壳程序的统称,而 Bash 是某一个具体的 Shell。Bash 也是许多 Linux 发行版的默认 Shell。

相关推荐
Felven1 小时前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
莫晓燚1 小时前
mall 电商项目完整部署---实战
linux·运维·docker·容器
咋的啥名都用不了呢~2 小时前
Linux项目部署5(安装Nginx的插件)
linux
CodeYp20192 小时前
第11讲:应用层协议 HTTP
linux·http
爱和冰阔落2 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
我是koten8 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
2601_9679873715 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li15 小时前
linux之数据链路层
linux·网络·智能路由器
GeW17 小时前
高端化走到深处,是数据库和Linux的事
linux
程序员初一18 小时前
Linux 远程桌面有四种做法
linux·ssh