
我讀過很多文章,說 FreeBSD 中的官方 shell 是tcsh
,而 Debian 中的官方 shell 是dash
.然而,當我echo $shell
(FreeBSD)或env
在 Debian 中時,它說 shell 是csh
第一種情況,或bash
在 Debian 中。
這是全新安裝的情況。我在root帳號和普通使用者帳號下進行了測試。另外,當我在 FreeBSD 中建立新帳戶時,我可以選擇 3 個 shell;sh
,csh
或者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/sh
bash 或 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 系統),以及互動式使用和腳本編寫。但其他選擇是完全合理的,有些可能更適合您。