為什麼 Bourne shell 被認為是過時的?
Bourne shell 和 Bash 之間的關係是否類似於 C 和 C++ 的關係(如果是這樣,則表示兩者都具有作為 shell 的位置)?每當我讀到一些關於 shell 的東西時,它總是說 Bourne shell 已經過時了,但是為什麼呢?
您不太可能真正使用 Bourne Shell,更有可能使用的是 dash(Debian Almquist Shell)。您可能想通過呼叫以下方式進行檢查:
echo $0
可以通過
whatshell
腳本從 https://www.in-ulm.de/~mascheck/various/whatshell/檢索 shell 的確切名稱但是 dash 不是 Bourne Shell 並且相對於 UNIX 比 Bourne Shell 更差,因為 dash 不支持多字節字元。
Bourne Shell 是由Stephen Bourne於 1976 年作為重寫的 Thompson Shell 開始的一個 shell,從那時起已經大規模發展。
1983 年,Bourne Shell 的副本被David Korn用作 Korn Shell (ksh) 的啟動器。
1988 年,Bourne Shell 和 ksh 都獲得了對國際化的支持,而來自 UNIX 的 libc 一直發展到 1992 年,因此從那時起兩者都支持多字節字元。
1989 年,Korn Shell 被用作 GNU 項目的 shell Bash 的典範。
1989 年,1982 年的 Bourne Shell 被用作 ash 的典範(Almquist shell),dash 是 ash 的錯誤修復版本。但是 ash 和 dash 後來都添加了 POSIX 功能。
1992 年,POSIX 使用 ksh88 作為 POSIX shell 定義的典範。
2005 年,OpenSolaris 使 Bourne Shell 開源,從 2006 年開始,Bourne Shell 原始碼演變為與 POSIX 兼容。
雖然 dash 缺少歷史編輯器和多字節支持,但目前的 Bourne Shell 實現了這些功能。
然而,今天的 shell 之間的主要區別是(除了 POSIX 合規性之外)使 shell 可以很好地用作互動式 shell 的特性。這是您從最近的 Bourne Shell (bosh)、ksh 和 Bash 獲得的,但不是從 dash 獲得的。