天天看點

What is a shell and what is Bash?

常聽說:shell程式設計,Bash程式設計,和Bash shell程式設計,究竟什麼是shell,又何為Bash,兩者有什麼聯系…

簡單的說,shell是指令解釋器,用于解析和執行指令。它對使用者屏蔽了作業系統底層(kernel)的複雜性,是兩者間的橋梁。

Bourne shell是早期Unix系統使用的shell,位于/bin/sh,簡稱sh,其為shell的具體化。可了解為:shell是一個對象,Bourne shell僅是該對象的一個執行個體。

sh既是指令解釋器,能執行指令;也是程式設計語言,可以将各種指令組合,加上邏輯,形成新的指令。 且sh成為了後續各種shell事實上的标準,Unix-like系統上的shell都會相容Bourne shell。

Bash(Bourne-Again SHell),也是一種shell,最大程度的和sh相容,并從Korn shell ksh和C shell csh引入了一些實用的特性。在互動性,和可程式設計方面比sh更加強大。

現在前面的說法很明了了:

shell程式設計,是指使用一種shell(可能是Bash)進行程式設計;就像說使用程式設計語言程式設計,最終還要選取一種語言嘛。

Bash程式設計,是指使用bash(這個shell)進行程式設計;就像說使用Python(程式設計語言)程式設計。

Bash shell程式設計,是“Bash程式設計”啰嗦的說法。