bash、zsh和其他linux shell之間有什麼區別?

預設情況下,大多數Linux發行版都包含bashshell,但是您也可以切換到另一個shell環境。Zsh是一個特別流行的替代品,還有其他的貝殼,比如ash、dash、fish和tcsh。但有什麼區別,為什麼會有這麼多?...

bash、zsh和其他linux shell之間有什麼區別?

預設情況下,大多數Linux發行版都包含bashshell,但是您也可以切換到另一個shell環境。Zsh是一個特別流行的替代品,還有其他的貝殼,比如ash、dash、fish和tcsh。但有什麼區別,為什麼會有這麼多?

貝殼做什麼?

在Linux上,當您在命令列登入或啟動終端視窗時,系統將啟動shell程式。shell提供了擴充套件命令列環境的標準方法。如果願意,可以將預設shell換成另一個shell。

第一個shell環境是由貝爾實驗室開發並於1971年釋出的湯普森shell。從那時起,Shell環境就一直在這個概念的基礎上進行構建,添加了各種新特性、功能和速度改進。

例如,Bash提供了命令和檔名完成、高階指令碼功能、命令歷史記錄、可配置的顏色、命令別名以及1971年第一個shell釋出時不可用的各種其他功能。

shell也在後臺由各種系統服務使用。Linux發行版包含許多作為shell指令碼編寫的函式。這些指令碼是透過shell環境執行的命令和其他高階shell指令碼函式。

炮彈指向bash:sh、csh、tsh和ksh

相關:什麼是Unix,為什麼它很重要?

現代貝殼最傑出的鼻祖是伯恩貝殼,也被稱為“sh”,它是以在美國電話電報公司貝爾實驗室工作的斯蒂芬·伯恩的名字命名的。1979年釋出,由於支援命令替換、管道、變數、條件測試和迴圈以及其他特性,它成為Unix中的預設命令直譯器。它沒有為使用者提供太多的定製,也不支援別名、命令完成和shell函式等現代細節(儘管最後添加了這個)。

C shell,或稱“csh”,是由加州大學伯克利分校的billjoy在20世紀70年代末開發的。它添加了許多互動元素,使用者可以透過這些元素控制自己的系統,比如別名(長命令的快捷方式)、作業管理功能、命令歷史等等。它是以C程式語言為模型的,Unix作業系統本身就是用C程式語言編寫的。這也意味著BourneShell的使用者必須學習C語言,以便在其中輸入命令。此外,csh還有很多bug需要使用者和建立者在很長一段時間內解決。人們最終使用bourneshell編寫指令碼,因為它能更好地處理非互動式命令,但仍堅持使用cshell進行正常使用。

bash、zsh和其他linux shell之間有什麼區別?

隨著時間的推移,很多人在C shell中修復了bug並添加了一些特性,最終得到了一個名為“tcsh”的csh改進版本。但是csh仍然是基於Unix的計算機的預設設定,並且添加了一些非標準特性。來自貝爾實驗室的davidkorn致力於KornShell,或稱為“ksh”,它試圖透過向後相容bourneshell的語言來改善這種情況,但添加了cshshell的許多特性。它於1983年釋出,但擁有專有許可證。直到21世紀,它才成為自由軟體,當時它是在各種開源許可下發布的。

bash的誕生

bash、zsh和其他linux shell之間有什麼區別?

用於Unix的可移植作業系統介面(POSIX)是對繁忙的專有csh實現的另一種迴應。它成功地建立了一個命令解釋標準(除其他外),並最終反映了KornShell中的許多特性。與此同時,GNU專案正試圖建立一個免費的、與Unix相容的作業系統。GNU專案開發了一個自由軟體shell作為其自由作業系統的一部分,並將其命名為“Bourne-ashell”或“bash”。

Bash自1989年第一次釋出以來已經改進了幾十年,但它仍然是目前大多數Linux發行版的預設shell。它也是蘋果macOS上的預設shell,可以在微軟windows10上安裝。

較新的貝殼:灰,破折號,zsh和魚

儘管Linux社群在此後的幾年裡已經開始使用Bash,但當Bash在28年前首次釋出時,開發人員並沒有停止建立新的shell。

肯尼思·阿爾姆奎斯特創造了一個伯恩貝殼的克隆體,被稱為阿爾姆奎斯貝殼,一個貝殼,“灰燼”,有時只是“sh”。它也與POSIX相容,成為了BSD(Unix的另一個分支)中的預設shell。ash shell比bash更輕量級,這使得它在嵌入式Linux系統中很流行。如果你有一個安裝了BusyBox的Android**,或者任何其他帶有BusyBox軟體套件的裝置,那麼它使用的是ash的程式碼。

bash、zsh和其他linux shell之間有什麼區別?

Debian開發了一個基於ash的shell環境,並稱之為“dash”。它被設計成與POSIX相容且輕量級的,因此它比Bash更快,但沒有它的所有特性。Ubuntu使用dash shell作為非互動式任務的預設shell,加速shell指令碼和其他後臺執行的任務。Ubuntu仍然使用bash作為互動shell,因此使用者仍然擁有全功能的互動環境。

bash、zsh和其他linux shell之間有什麼區別?

最流行的新shell之一是zshell,或“zsh”。由paulfalstad於1990年建立的zsh是一個Bourne風格的shell,它包含了bash中的特性,甚至更多。例如,zsh具有拼寫檢查、監視登入/登出的功能、一些內建的程式設計特性(如位元組碼)、對語法中的科學表示法的支援、允許浮點運算等特性。

bash、zsh和其他linux shell之間有什麼區別?

另一個較新的shell是2005年釋出的友好互動式shell,或稱“fish”。它有一個獨特的命令列語法,設計得更容易學習,但不是從bourneshell或cshell派生的。這是一個有趣的想法,但是透過使用fish所學到的東西並不一定能幫助您使用bash和其他Bourne派生的shell。

你應該選哪一個?(以及zsh為什麼受歡迎)

你不需要選擇貝殼。您的作業系統為您選擇預設的shell,而這個選擇幾乎總是bash。坐在Linux發行版甚至Mac面前,你幾乎總是會有一個bashshell環境。Bash有很多高階特性,但是除非編寫shell指令碼,否則可能不會使用它們。

在嵌入式Linux系統或BSD系統上,您將得到ash shell。但是ash是一個基於Bourne的shell,並且基本上與bash相容。儘管在這個輕量級shell中沒有一些高階指令碼功能,但是您從使用bash獲得的任何知識都將轉換為使用ash或dash shell。

幾乎你會遇到的每一個shell都是基於Bourne的,包括zsh都是類似的。

這就是為什麼zsh很受歡迎。這個較新的shell與bash相容,但包含更多特性。zsh shell提供了內建的拼寫更正、改進的命令列完成功能、充當shell外掛的可載入模組、允許您在命令列(而不僅僅是命令)上別名檔名或其他任何內容的全域性別名,以及更多主題化支援。它類似於bash,但是有很多附加功能、附加特性和可配置選項,如果您花大量時間在命令列上,您可能會很感激。

如果您熟悉bash,您可以切換到zsh而不必學習其他語法,您只需獲得額外的特性。如果您熟悉zsh,就可以切換到bash而不必學習其他語法,因為您將無法訪問這些特性。

bash、zsh和其他linux shell之間有什麼區別?

“噢,我的ZSH”是一個工具,它可以幫助您更輕鬆地啟用ZSH外掛並在預先**的主題之間切換,快速定製ZSH shell,而無需花費數小時來調整內容。

還有其他的貝殼。例如,tcsh shell仍然存在,並且仍然是一個選項。FreeBSD使用tsch作為預設的根shell,使用ash作為預設的互動shell。如果您經常使用C程式設計,tsch可能更適合您。然而,它遠沒有bash或zsh那麼常用。

如何在shell之間切換

換一個新的外殼來試用是很容易的。只需從Linux發行版的軟體包管理器安裝shell,然後鍵入啟動shell的命令。

例如,假設您想在Ubuntu上嘗試zsh。您可以執行以下命令來安裝並啟動它:

sudo apt install zsh zsh

然後你就會坐在一個zsh貝殼旁邊。在shell處鍵入“exit”以離開它並返回到當前shell。

bash、zsh和其他linux shell之間有什麼區別?

這只是暫時的。每當您開啟一個新的終端視窗或在命令列登入到您的系統時,您將看到您的預設shell。要更改登入時看到的shell(即登入shell),通常可以使用chsh或“changeshell”命令。

要使用這個命令,您首先需要使用which命令找到shell的完整路徑。例如,假設我們想要更改為zsh shell。我們將執行以下命令:

which zsh

在Ubuntu上,這告訴我們zsh二進位制檔案儲存在/usr/bin/zsh。

執行以下命令,輸入密碼,系統將提示您選擇新的登入shell:

chsh

根據上面的命令,我們將輸入/usr/bin/zsh。在執行chsh命令並將其更改回來之前,zsh shell將是預設的。

bash、zsh和其他linux shell之間有什麼區別?

  • 發表於 2021-04-08 06:16
  • 閱讀 ( 62 )
  • 分類:網際網路

你可能感興趣的文章

什麼是shell指令碼,為什麼要使用它

...在刪除任何檔案,如果需要這些檔案,可以將它們複製到其他位置。 ...

  • 發佈於 2021-03-13 04:53
  • 閲讀 ( 54 )

頂級網站和書籍,讓您成為linux命令列英雄

... 因此,請隨意將我們的Linux部分與上面列出的其他站點一起新增書籤。 ...

  • 發佈於 2021-03-14 07:04
  • 閲讀 ( 60 )

如何在windows10上獲得linux bash shell

... 其他方法可用於啟動所選的Linux環境。從“開始”選單,可以輸入: ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 60 )

如何定製mac終端並使其更有用

...提供了一個shell或命令直譯器的介面,它接收命令並呼叫其他人來執行例程和複雜任務。 ...

  • 發佈於 2021-03-21 20:13
  • 閲讀 ( 49 )

如何在macos終端中定製zsh提示符

...以在黑色、白色、黃色、綠色、紅色、藍色、青色和洋紅之間選擇前景(文字)顏色。 ...

  • 發佈於 2021-03-26 16:03
  • 閲讀 ( 60 )

ascii和unicode文字之間有什麼區別?

...(例如cafe)來將外來詞英語化,就無法用ASCII表示café等其他語言的外來詞。本地化的ASCII擴充套件是為了滿足各種語言的需求而開發的,但是這些努力使得互操作性變得尷尬,並且明顯地擴充套件了ASCII的功能。 ...

  • 發佈於 2021-03-28 12:00
  • 閲讀 ( 44 )

在linux中,“bash”是什麼意思?

... 雖然shell確實透過命令啟動其他應用程式,但它們本身也通常具有互動功能。 ...

  • 發佈於 2021-03-28 13:14
  • 閲讀 ( 62 )

哪個linux shell最好?比較了5種常見的貝殼

...令列shell”。除了被吹捧為“輝煌的VGA顏色”之外,還有其他外殼的一些增強功能: ...

  • 發佈於 2021-03-30 18:45
  • 閲讀 ( 51 )

如何使用受限shell來限制linux使用者可以做什麼

...一個shell。這是標準外殼的另一種模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下啟動。在本文中,我們將使用Bash,但相同的原則也適用於其他shell。 因為受限shell只是使用標準shell的另一種方式,所以它們很容易設定。...

  • 發佈於 2021-03-31 10:57
  • 閲讀 ( 56 )

如何使用chsh在linux上更改預設shell

Bash不是唯一的Linux shell。很容易嘗試其他的shell,比如非常流行的Zsh。找到一個您喜歡的shell後,使用chsh命令將其設定為預設shell。我們會教你怎麼做。 為什麼貝殼很重要 shell位於您和作業系統之間。它在終端視窗內提供環境...

  • 發佈於 2021-04-02 06:04
  • 閲讀 ( 65 )
c9033ow4
c9033ow4

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦