對於 FreeBSD 和 Debian,我應該學習哪種 shell?

對於 FreeBSD 和 Debian,我應該學習哪種 shell?

我讀過很多文章,說 FreeBSD 中的官方 shell 是tcsh,而 Debian 中的官方 shell 是dash.然而,當我echo $shell(FreeBSD)或env在 Debian 中時,它說 shell 是csh第一種情況,或bash在 Debian 中。

這是全新安裝的情況。我在root帳號和普通使用者帳號下進行了測試。另外,當我在 FreeBSD 中建立新帳戶時,我可以選擇 3 個 shell;shcsh或者tcsh。如果我不做選擇,csh則為帳戶的預設值。

這些系統下的官方標準 shell 是什麼?是它tcsh還是csh在 FreeBSD 中?是在 Debian 中dash還是bash在 Debian 中?

是我做錯了什麼嗎?或者這些文章和網站是否有誤導?

我想學習兩種 shell:一種用於 Debian,一種用於 FreeBSD,但我找不到應該學習哪一種,因為不清楚哪一種是官方 shell。

另外,在搜尋我應該學習哪個 shell 時,我發現了這個:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ 是只是不喜歡的人csh,還是我們真的應該避免csh

我正在使用最新的 Debian 和 FreeBSD 版本。

我開始迷失所有這些 shell 選項,它們對我來說看起來都一樣(除了語法;我的意思是它們看起來都提供相同的可能性)。這就是為什麼我想學習官方的。

答案1

您根本不需要使用給定係統的預設 shell。 Debian 和 FreeBSD 都提供了許多不同的 shell,而且大多數或全部 shell 都可以在兩者上使用,或者是預先安裝的,或者是易於安裝的。

注意命名。/bin/csh真正的 tcsh、/bin/shbash 或 ksh並不罕見。

sh,Bourne shell,是最古老且仍在普遍使用的 Unix shell。 bash可能是使用最廣泛的 sh 衍生物;ksh而且zsh也很普遍。

csh,C shell,是由 Bill Joy 為 BSD 開發的。它具有一些比sh(或至少比sh當時存在的舊版本) 更方便的互動使用功能。tcsh源自csh,並添加了許多新功能,其中大部分旨在互動使用。正如您透過閱讀所看到的csh.whynot、csh 和 tcsh 在使用它們進行腳本編寫而不是互動時存在一些問題。

就我個人而言,我從 csh 開始,然後在 tcsh 可用時切換到 tcsh。我現在很少使用 csh 來編寫腳本,更喜歡使用 sh 或 bash(或 Perl 來處理相當複雜的事情)。

(幾年後更新:我已經放棄了 tcsh,現在交互地使用 bash。)

我的建議是選擇一個 shell 並很好地學習它,在 FreeBSD 和 Debian 上使用它。如果你選擇 tcsh,我想你必須在 Debian 上安裝它:sudo apt-get install tcsh。如果你選擇bash,我不知道FreeBSD上是否預先安裝了它;如果不是,安裝也應該一樣簡單。

沒有必要以互動方式使用相同的 shell 並用於編寫腳本,但它可以避免一些混亂並縮短學習曲線。

ksh 可能與 bash 一樣強大,而 zsh 甚至更強大(並且有很多我從未花時間學習的功能)。

我建議使用 bash,適用於 FreeBSD 和 Debian(以及您可能使用的任何其他類 Unix 系統),以及互動式使用和腳本編寫。但其他選擇是完全合理的,有些可能更適合您。

相關內容