1.前言
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。这是Linux系统的简单说明。
2.原理
先看这张图:
输入指令的过程,本质就是输入字符串。
指令的本质,就是编译好的程序和脚本,一定会在系统的特定路径下存放。
我们所有的指令,都要在系统内核内部运行,但是内核难度太高,不适合用户使用,所以出现了命令行解释器。命令行解释器的本质相当于Windiws系统下的图形化界面。使用命令行解释器也就等于变相的保护了系统内核,防止系统被破坏。
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
shell的定义:shell就是所有命令行解释器的统称,它的作用就是将使用者输入的指令传达给操作系统,然后将操作系统做出的处理结果返回给用户。
关系图:
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。