浅谈操作系统的神秘外壳 —— shell
本篇如有不解之处,请查看 Linux
专栏历史拙作 ^ ^
在本篇开始之前,请先思考在 Linux
系统中一条指令究竟是如何运行跑起来的
大部分指令就是文件
在我们历史所学的 大部分 指令,狭义上理解,其本质就是 我们系统磁盘当中 特定目录下的 可执行文件, 所以指令可安装可卸载!!! ,所以如果哪天卸了你 Linux
系统里的某个指令,那注定是运行不了的!!!如下图:
用户执行某种功能的时候,不是让操作系统执行对应的指令的,而是先交给外壳程序
关于 bash
首先在我们系统中存在一个特定程序,也就是 bash
程序(指令)
这个程序一旦启动就会在屏幕上显示如下图所示的场景,也就是在我们输指令之前所看到的
其实这是 命令行提示符,也就是一个字符串
这个字符串 外面是一对中括号 ,里面分别是: 用户名、主机名和路径 ,也就是 printf
打出来的(Linux
里也有 printf
),我们平时在键盘里输入一条指令,也就是我们输入的一个字符串被特定的程序 bash
读入,所以 bash
也就是获取你输入的程序
什么是 shell
- 如上图,在最中心的部分才是操作系统最核心的,也就是 操作系统内核 ,用户是无法直接访问操作系统的;
- 为了让我们更好的访问它,在任何一款操作系统中,都会给我们包裹如上图所示的 中间软件层(介于操作系统内核和用户之间) ,也就是 外壳程序,也就叫做 shell 程序 ,上网一查便知,
shell
就是外壳的意思 。那么 最典型的两种外壳程序 就是 图形化界面(桌面) 和 命令行(bash) 。说个例子:在我们windows
系统开机的时候,最后一步就是加载桌面;登录Linux
系统时,看到命令行提示符就说明Linux
系统开起来了,而之前的步骤就是在加载 真正的操作系统,也就是 内核
shell 的作用
如上图所示,可以总结以下两点:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
简单来说就是命令行解释器!!!
shell 因何存在
- 用户本身根本就不擅于和操作系统(OS)交互
- 因着外壳的存在可以对用户的请求进行是否合法的检测,变相保护操作系统(OS),就是说如果用户连指令都输不明白,干嘛还要传给操作系统执行错误指令呢?
要明白用户输入的指令是有风险的!!!每一次在进行命令行执行时,并不是 bash
直接给我们执行,而是会创建一个子进程,让这个子进程帮用户进行命令行解释,而真正的 bash
主进程只要进行等待即可,所以指令执行成功与否,都影响不到 bash
主进程
什么是 bash
结果上面的解释,不难知道 bash
就是 shell
命令的一种 ^ ^