Linux——shell外壳程序

2023-10-20 20:36
文章标签 linux 程序 shell 外壳

本文主要是介绍Linux——shell外壳程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

shell外壳程序

1. 什么是shell外壳程序

  • Linux严格意义上说的是一个操作系统,我们称之为“核心 “ ,但我们一般用户,不能直接使用核心。
    而是通过核心的“外壳”程序,也就是所谓的shell

  • shell是所有外壳程序的统称

  • 平时程序员所用的指令操作和开发操作都是在shell外壳之上操作
  • Linux中,shell外壳指的就是命令行,在windos中指的就是图形化界面

我们可以用下面的关系图来表示:

在这里插入图片描述


2. 为什么要有shell外壳

有小伙伴会有疑问:作为Linux系统的使用者,我们为什么不直接向操作系统交互,反而要通过shell外壳这一媒介呢?

我们先来引入一个生动的故事:

2.1 讲个故事:

阶段一:

从前有个村庄,村里村长有一个儿子——小李,他仰慕儿时的女玩伴——小花,一天,小李想对小花提出交往的请求,但奈何小李性格腼腆,不敢和小花当面交流,因此就找来了村里的媒婆——王姨。

阶段二:

王姨听了小李的诉求后就去找小花商量,但是小花却对小李不感兴趣,随便找了个理由搪塞了过去。小李从王姨那听说了后仍不死心,希望王姨再争取一下。当王姨第二次来到小花家时,远远地便望见小花正在和另一个男生还有她的父母正坐一桌吃饭,有声有笑、其乐融融,这时王姨便意识到这个时候再去找小花便是一个不明智的危险的行为——小花已经名花有主,再去说媒就会招人嫌。但小李仍旧不死心,希望王姨想想办法。这时王姨就苦恼了,既不能得罪了村长的儿子,又不能硬找已经有对象的小花,砸自家招牌,怎么办呢?

阶段三:

王姨心生一计,她开了一个事务招待所,并招揽了大量实习生。她让实习生去做那些成功率低的媒事,而自己只做成功率高的。这样就算实习生失败了,也不会影响到自己的声誉,同时也可以用“实习生经验不足”的理由来对付求媒人。两全其美。

  • 看完了这个故事,我们可以将故事中的小花比作是Linux中的内核,将小李比作是不断向内核操作系统发送请求的用户,而王姨就是沟通内核和用户的shell外壳。

    即:小花 -> Linux内核 小李 -> 用户 王姨 -> shell外壳

  • 做完类比,我们再从易用程度安全两个角度来讨论为什么要有shell外壳这个问题:

2.2 易用程度

  • 就像小李难以直接向小花表达感情,用户也难以直接向操作系统直接发送请求
  • 为了能够让小花听到小李的心意,就需要王姨这个中间媒介来传达。同样,为了能让内核能够清楚地知道用户的需求,我们都会通过shell外壳程序来间接地对内核进行交互

2.3 安全

  • 就像故事中小花明明已经名花有主,但小李仍要提出交往,王姨认为这个行为不合适,直接不执行
  • 当shell外壳程序认为用户向系统内核提出的请求不合理甚至危险时,shell外壳会对该指令直接拦截,不予执行。
  • 因此我们可以说:对于某些不合理的非法指令,shell外壳会进行拦截,一定程度上保护了内部的操作系统

3. shell外壳程序的特点

  1. shell是一切外壳程序的统称

    • 在Linux的centOSubuntu中,这个外壳程序一般叫做bash:将用户的命令进行解析,并传达给内核;同时将内核的反馈结果进行解析在返回给用户。
    • 在Windows系统中,这个外壳程序一般叫做图形化界面:通过鼠标双击、右键、左键等一些列操作实现于内核的交互。
  2. shell外壳的子进程

    • 从本质上来说,shell外壳实际上已是一个程序(进程),系统只要启动就会一直存在
    • 故事中我们讲到,如果王姨认为一桩媒事的成功概率不大,那么她就会让实习生来做。
    • 同样,如果shell外壳认为用户输入的指令是有风险的,那么shell外壳就会用创建子进程的方式让子进程来执行,而让自己规避风险

4. 总结

在学习Linux的过程中,我们不免会发出疑问,下图的字符串到底是什么?

在这里插入图片描述

  • 实际上,上面那一串等待我们输入指令的字符串就叫做命令行解释器

  • 而命令行解释器的背后有一个程序,它用来接收用户输入的指令,并执行由用户到内核,再由内核返回到用户翻译工作

  • 这个程序就叫做shell外壳程序

经过本次的学习,我们可以做出如下的总结

  • shell外壳程序是一切外壳程序的统称
  • shell外壳程序是连接用户和系统内核间的桥梁
  • shell外壳在方便用户和内核交互的同时也在一定程度上保护了内核的安全

这篇关于Linux——shell外壳程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249565

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打