FreeBSD と Debian ではどのシェルを学ぶべきでしょうか?

FreeBSD と Debian ではどのシェルを学ぶべきでしょうか?

tcshFreeBSD の公式シェルは であり、Debian では であると書かれた記事を多数読みましたdash。しかし、echo $shell(FreeBSD) またはenvDebian の場合、シェルはcsh前者の場合、またはbashDebian の場合であると書かれています。

これは新規インストールの場合です。ルート アカウントと通常のユーザー アカウントでテストしました。また、FreeBSD で新しいアカウントを作成する場合、 、 の 3 つのシェルを選択できます。sh選択cshtcshない場合は、cshがアカウントのデフォルトになります。

これらのシステムにおける公式の標準シェルは何ですか? FreeBSD ではtcshまたはですかcsh? Debian ではdashまたはですか?bash

私が何か間違っているのでしょうか? それとも記事やサイトが誤った情報を伝えているのでしょうか?

Debian 用と FreeBSD 用の 2 つのシェルを学習したいのですが、どちらが公式シェルなのかが明確ではないため、どちらを学習すればよいのかわかりません。

また、どのシェルを学習すべきか検索していたところ、次のものを見つけました:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ それは単に嫌いな人なのでしょうかcsh、それとも本当に避けるべき人なのでしょうかcsh?

私は最新の Debian および FreeBSD バージョンを使用しています。

これらすべてのシェル オプションで混乱し始めています。すべて同じように見えます (構文は別ですが、すべて同じ可能性を提供しているように見えます)。これが、公式のオプションを学習したい理由です。

答え1

特定のシステムのデフォルトのシェルを使用する必要はまったくありません。Debian と FreeBSD はどちらもさまざまなシェルを提供しており、そのほとんどまたはすべてが、プリインストールされているか簡単にインストール可能な状態で、両方で利用できます。

/bin/csh命名には注意してください。 が実際には tcsh であったり、 が/bin/shbash や ksh であったりすることは珍しくありません。

shBourne シェルは、現在でも広く使用されている最も古い Unix シェルです。 は bashおそらく最も広く使用されている sh 派生であり、ksh広くzsh普及しています。

cshC シェルは、ビル・ジョイによって BSD 向けに開発されました。は から派生したものでsh、対話型の使用を目的とした多くの新機能が追加されていますshtcshcshcsh.なぜないcsh と tcsh は、対話型ではなくスクリプトに使用する場合にはいくつかの問題があります。

個人的には、最初は csh を使っていましたが、tcsh が利用可能になったときにそれに切り替えました。今ではスクリプトに csh を使うことはほとんどなく、sh または bash (または、ある程度複雑なものには Perl) を好んで使っています。

(数年後の更新: 私は tcsh を放棄し、現在は bash を対話的に使用しています。)

私のアドバイスとしては、1 つのシェルを選択して、FreeBSD と Debian の両方で使用しながら、それをよく学習することです。tcsh を選択した場合は、Debian にインストールする必要があると思いますsudo apt-get install tcsh。bash を選択した場合は、FreeBSD にプリインストールされているかどうかはわかりませんが、そうでない場合は、インストールするのは同様に簡単なはずです。

対話型とスクリプトで同じシェルを使用する必要はありませんが、混乱を避け、学習曲線を短縮することができます。

ksh はおそらく bash と同程度に強力であり、zsh はさらに強力です (そして、私が時間をかけて学習したことのない機能がたくさんあります)。

私は、FreeBSD と Debian (および使用する可能性のある他の Unix 系システム) の両方、および対話型使用とスクリプトの両方に bash をお勧めします。ただし、他の選択肢もまったく問題ありませんし、より適しているものもあります。

関連情報