Linux嚴(yán)格意義上說(shuō)的是一個(gè)操作系統(tǒng),我們稱之為“核心(Kernel)”,但我們一般用戶并不能直接使用kernel,而是通過(guò)kernel的“外殼”程序,也就是所謂的shell,來(lái)與kernel進(jìn)行溝通。
shell譯為“外殼”,它是包裹在linux內(nèi)核外層的,一個(gè)可通過(guò)一系列的linux命令對(duì)操作系統(tǒng)發(fā)出相關(guān)指令的人機(jī)界面。shell可以通過(guò)其條件語(yǔ)句和循環(huán)語(yǔ)句等,把一系列l(wèi)inux命令結(jié)合在一起,形成一個(gè)相當(dāng)于面向過(guò)程的程序,來(lái)實(shí)現(xiàn)一些較為復(fù)雜的功能。
shell 是一個(gè)用C語(yǔ)言編寫(xiě)的程序,它是用戶使用Linux的橋梁。Shell既是一種命令語(yǔ)言,又是一種程序設(shè)計(jì)語(yǔ)言。Shell 是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面linux命令,用戶通過(guò)這個(gè)界面訪問(wèn)操作系統(tǒng)內(nèi)核的服務(wù)。
從技術(shù)角度,shell的最簡(jiǎn)單定義:命令行解釋器(Command Interpreter)
主要包含:
對(duì)比Windows GUI,我們操作Windows不是直接操作Windows的內(nèi)核,而是通過(guò)圖形接口,點(diǎn)擊,從而完成我們的操作。(比如進(jìn)入D盤(pán)的操作,我們通常是雙擊D盤(pán)盤(pán)符,或者運(yùn)行起來(lái)一個(gè)應(yīng)用程序)
shell對(duì)于Linux有著相同的作用,主要是對(duì)我們的指令進(jìn)行解析,將解析指令給LInux內(nèi)核。反饋結(jié)果再通過(guò)內(nèi)核運(yùn)行出結(jié)果linux命令,通過(guò)shell解析給用戶。
個(gè)人理解:因?yàn)橛脩魺o(wú)法直接與內(nèi)核溝通,所以shell就相當(dāng)于一個(gè)媒介,用于用戶與內(nèi)核之間的溝通。
shell與bash的關(guān)系:
我們可以把shell比作是瀏覽器,而bash是谷歌瀏覽器。瀏覽器的內(nèi)核可以解釋我們的html,css,js文件,不同瀏覽器的內(nèi)核略有差異,但是都能大概相同地解釋我們的前端文件。Linux有各種各樣的shell,bash就是其中最為通用的一種。