Linux
严格意义上说的是一个操作系统,我们称之为
“
核心(
kernel
)
“
,但我们一般用户,不能直接使用
kernel
。
而是通过
kernel
的
“
外壳
”
程序,也就是所谓的
shell
,来与
kernel
沟通。如何理解?为什么不能直接使用
kernel
?
从技术角度,
Shell
的最简单定义:命令行解释器(
command Interpreter
)主要包含:
将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者。
对比
windows GUI
,我们操作
windows
不是直接操作
windows
内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D
盘的操作,我们通常是双击
D
盘盘符
.
或者运行起来一个应用程序)。
shell
对于
Linux
,有相同的作用,主要是对我们的指令进行解析,解析指令给
Linux
内核。反馈结果在通过内核运行出结果,通过shell
解析给用户。

shell外壳存在的意义:1、变相的保护操作系统。因为非法的指令会被shell外壳给拒绝。
2、执行命令,通过派生子进程的方式执行用户的指令。而shell本身一般而言并不执行对应的指令。
就像window的图形界面,本质上而言也是一种外壳程序。Linux shell命令行外壳 和 window 图形界面是兄弟关系。
另外,shell外壳是统称,而例如博主买的centos 7 中的bash则是具体的称呼。就好像shell外壳是老师群体,而bash则是数学老师老王。