当前位置: 首页 > news >正文

【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

http://www.jsqmd.com/news/695054/

相关文章:

  • 建行广东江门分行:数字人民币场景应用引领校园金融数字化新风尚
  • DAN-F10N-00B,标准精度双频GNSS天线模块,实现城市环境米级精准定位与简易集成
  • 别再写SFINAE了!C++26反射驱动的零成本抽象重构:4类高频元编程模式迁移路径+编译时间压缩至1/5实录
  • 2026 年出海品牌社媒基准:你的竞争对手都在用什么策略 - SocialEcho社媒管理
  • 简单的拖拉拽功能
  • 别再乱连了!Altium Designer里Net Label、Port、Sheet Entry到底怎么选?一张图帮你理清
  • 从‘网红脸’到‘可控艺术’:用StyleGAN系列玩转人脸编辑的保姆级避坑指南
  • Python处理图片:用Pillow保存JPEG/PNG时,如何平衡‘体积’与‘画质’?一份实测指南
  • Docker部署vLLM大模型推理服务全攻略(2026年4月实测)
  • 时序数据库选型指南:我们是怎么评估和选型的
  • 全新租赁小程序系统源码 基于ThinkPHP+UniApp开发的租赁商城小程序
  • LinkedList 源码深度解析
  • 别再纠结SMA和EMA了!用Python的TA-Lib库5分钟搞定双均线交易策略回测
  • 从一次线上故障排查,我重新认识了Linux的nanosleep:它真的‘睡’得准吗?
  • ShortCut MoE模型分析
  • Windows多显示器DPI缩放终极指南:SetDPI命令行工具实战详解
  • 重庆漏水检测电话,消防管道漏水检测,自来水管道漏水检测,精准定位测漏,水管漏水检测(东哥漏水检测) - 品牌企业推荐师(官方)
  • 别再被‘WebSocket is already CLOSING’搞懵了!手把手教你用Node.js + 前端实现心跳保活与自动重连
  • C++26反射不是未来——是现在!3大主流构建系统(CMake 3.29+/Bazel 7+/Meson 1.5+)反射支持配置对比表
  • 浙江省cppm报名机构及联系方式(公示) - 品牌企业推荐师(官方)
  • 当你的微信视频通话响起时,5G核心网在背后做了什么?—— 深入解读Network Triggered Service Request
  • PS人像合成踩坑指南:解决发丝抠不干净、背景脱节问题
  • 赛博朋克2077存档编辑器:5步完全掌控你的游戏数据
  • 从Element Plus到Iconfont:在Vue3项目中优雅混用两套图标库的实战指南
  • 一线观察:杨浦全铝定制生产商的真实表现
  • 从飞机抗气流到轮船抗海浪:手把手拆解PID控制器在真实世界里的‘抗干扰’实战
  • FSEC赛车背后的‘数据大脑’:我们如何用C#和nRF24L01搭建了一套无线数据采集与可视化系统
  • Spring Boot项目里,用weixin-java-miniapp搞定小程序登录和发消息(保姆级配置)
  • 小程序搭建费用解析:预算有限怎么办
  • 别再乱传数据了!Vue3组件通信保姆级指南:从defineProps到mitt,5种方式一次讲透