Linux严格意义上说的是一个操作系统,我们称之为“核心(Kernel)”,但我们一般用户并不能直接使用kernel,而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel进行沟通。
shell译为“外壳”,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,来实现一些较为复杂的功能。
shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面linux命令,用户通过这个界面访问操作系统内核的服务。
从技术角度,shell的最简单定义:命令行解释器(Command Interpreter)
主要包含:
对比Windows GUI,我们操作Windows不是直接操作Windows的内核,而是通过图形接口,点击,从而完成我们的操作。(比如进入D盘的操作,我们通常是双击D盘盘符,或者运行起来一个应用程序)
shell对于Linux有着相同的作用,主要是对我们的指令进行解析,将解析指令给LInux内核。反馈结果再通过内核运行出结果linux命令,通过shell解析给用户。
个人理解:因为用户无法直接与内核沟通,所以shell就相当于一个媒介,用于用户与内核之间的沟通。
shell与bash的关系:
我们可以把shell比作是浏览器,而bash是谷歌浏览器。浏览器的内核可以解释我们的html,css,js文件,不同浏览器的内核略有差异,但是都能大概相同地解释我们的前端文件。Linux有各种各样的shell,bash就是其中最为通用的一种。