【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  盘的操作,我们通常是双击  盘盘符 或者运行起来一个应用程序)。
Shell 对于  Linux ,有相同的作用,主要是对我们的指令进行解析,解析指令给  Linux  内核。反馈结果在通过内核运行出结果,通过 Shell  解析给用户。

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

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

因为不擅长。

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

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


【结论】

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

【思考】

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp踩坑之项目:canvas第一次保存是空白图片

在ctx.draw()回调生成图片,参考canvasToTempFilePath接口文档 // data imgFilePath: null,// 缓存二维码图片canvas路径//js // 首先在draw()里进行本地存储 ...... ctx.draw(false, () >{uni.canvasToTempFilePath({ // 把画布转化成临时…

138.随机链表的复制(附带源码)

目录 一、思路分析 二、如何操作 三、源码 深拷贝:原封不动的拷贝一份 一、思路分析: 这一题,偏向于技巧性。如果是按照工科思维硬推,那会非常头大,脑袋瓜疼。 这一题目的核心难点在于:处理random指针…

学习STM32,该用哪款开发工具?

有很多初学者在问:学习STM32,该用哪款开发工具? 我首先说一下我的观点: 1.没有最好,只有适不适合,适合自己的才是最好的。 2.开发工具很多,各有各的特点,有优点肯定也有缺点。 本文…

Java网络编程-16

网络层级 import java.net.InetAddress; import java.net.UnknownHostException;//测试IP public class Demo {public static void main(String[] args) throws UnknownHostException {//查询本机地址InetAddress inetAddress InetAddress.getByName("127.0.0.1");…

快速排序(三)——hoare法

目录 ​一.前言 二.快速排序 hoare排法​ 三.结语 一.前言 本文给大家带来的是快速排序,快速排序是一种很强大的排序方法,相信大家在学习完后一定会有所收获。 码字不易,希望大家多多支持我呀!(三连+关…

Leetcode刷题笔记题解(C++):LCR 174. 寻找二叉搜索树中的目标节点

思路:二叉搜索树的中序遍历是有序的从大到小的,故得出中序遍历的结果,即要第cnt大的数为倒数第cnt的数 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeN…

Maven 打包时,依赖配置正确,但是类引入出现错误,一般是快照(Snapshot)依赖拉取策略问题

问题描述: 项目打包时,类缺少依赖,操作 pom.xml -> Maven -> Reload project ,还是不生效,但是同事(别人)那里正常。 问题出现的环境: 可能项目是多模块项目,结构…

Mybatis 动态SQL(set)

我们先用XML的方式实现 : 把 id 为 13 的那一行的 username 改为 ip 创建一个接口 UserInfo2Mapper ,然后在接口中声明该方法 package com.example.mybatisdemo.mapper; import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*; import jav…

【TOP顶刊】众望所归!这本IEEE(trans),号称行业白月光,上涨至中科院1区,评职神刊好投吗?

计算机类 • 神级顶刊 今天带来IEEE旗下trans系列顶刊,在最新的2023中科院分期中上涨至中科院1区,期刊质量实力强劲,如有投稿意向可重点关注,具体详情见下文: 01 期刊简介 IEEE Transactions on Automatic Control …

CRM是什么软件?

阅读本文,你将了解:一、CRM是什么软件;二、CRM软件如何进行客户管理;三、CRM软件有什么价值;四、优秀案例分享。 一、CRM是什么软件 CRM(Customer Relationship Management,客户关系管理&…

【vscode】远程资源管理器自动登录服务器保姆级教程

远程资源管理器自动登录服务器 介绍如何配置本地生成rsa服务端添加rsa.pub配置config文件 介绍 vscode SSH 保存密码自动登录服务器 对比通过账号密码登录,自动连接能节约更多时间效率,且通过vim修改不容易发现一些换行或者引号导致的错误,v…

【Spring 篇】MyBatis多表操作:编织数据的交响乐

欢迎来到MyBatis的多表操作世界!在这个充满交响乐的舞台上,我们将探索如何巧妙地编织多个数据表的数据,创造出一场旋律动听的数据交响曲。无需繁琐的SQL拼接,MyBatis让多表操作变得优雅而简单。让我们一起进入这个音乐殿堂&#x…