不同的 shell 腳本如何對應到不同的作業系統

不同的 shell 腳本如何對應到不同的作業系統

Linux 新手,有幾個關於 shell 腳本的問題:

  • C殼
  • bash shell
  • 伯恩外殼
  • 科恩殼

這麼多「貝殼」!相對於此,我如何知道我的 Linux 系統配置了哪些解釋器?如果我不支持,比如說,korn那麼我將如何配置我的系統來支援它?

另外,這些 shell 中哪一個最「活躍」(更新和維護最頻繁)?

先致謝!

答案1

您所解決的問題正是我們提出這個概念的原因符合 POSIX 標準的 shell以及製作「可移植」程式碼的能力。只要您遵守該連結中規定的 POSIX 相容語法,您就可以放心,您的程式碼是可移植的。

話雖如此,如果您的目標受眾只是 Linux,那麼我見過的每個 Linux 發行版都附帶bash預設 shell,因此您可以相當有信心,符合 Bash 3.x 的腳本幾乎可以在任何 Linux 發行版上運行。

答案2

第一個 UNIX 是 AT&T 公司的。第一個 shell 是 Bourne shell。它非常酷,但有一些嚴重的限制。

當夥計們在柏克萊開始使用 UNIX 並試圖讓它變得更好,他們推出了 C shell。它有不同的程式語言(雖然它自己也有缺陷)但在互動使用方面好得多。由於其在互動使用方面的優勢,它在任何源自 Berkeley UNIX 的 UNIX 中變得非常流行。

C shell(或 csh)產生了一個名為 tcsh 的開源複製。如果您使用 csh,您可能不會使用“true”或原始 csh,而是使用 tcsh。

同時,UNIX 開發人員並沒有坐視不管。 Dave Korn(好人)創建了一個新的 shell,稱為...Korn shell。它遵循 Bourne shell 創建的程式設計模型(可以說優於 csh 模型)。它變得非常流行,成為許多人的日常外殼。它也成為 UNIX 規範的一部分。這催生了一個相當流行的開源克隆,稱為 pdksh,它非常接近(認為不是 100%)相容。最終 AT&T 將程式碼作為開源發布。

GNU 的人想要製作自己的類 UNIX 系統,因此他們需要一個 shell,他們可以包含一個 shell,而不必擔心許可問題。他們創造了 bash,即 Bourne Again SHell。它主要與原始的 Bourne 兼容,並借鑒了 Csh 和 Ksh 的思想,它變得流行,既因為易於使用,也因為它隨每個 Linux 一起提供。已經有多個版本,版本 2 是第一個非常有用的版本,現在是版本 4,具有新功能。

然後出現了zsh。它也遵循 Bourne shell 語法,並複製了 Bourne shell、ksh、csh 和 bash 中的優點。可以說,它具有最先進的語法以及其他 shell 中沒有的功能。

長話短說那麼,該用什麼呢?如果您正在編寫啟動腳本,則需要使用 /bin/sh,它與 POSIX/Original Bourne 相容。該語言很稀疏,但即使 /usr 等磁碟不可用,它也能運行。

如果不是啟動腳本,您還有更多選擇。如果您只使用自己的計算機,請使用目前可用的任何東西。你控制你的機器。如果您寫的內容是為了贈送給其他人,我會使用 /bin/sh 或 bash。 /bin/sh 雖然簡單,但始終可用。 bash 是開源的,所以幾乎總是可用的,它足夠老,可以無處不在,但又足夠新,可以有一些新功能。 Csh 並非在所有地方都可用,zsh 也不是。

相關內容