web-dev-qa-db-ja.com

FreeBSDとDebianでどのシェルを学ぶべきですか?

FreeBSDの公式シェルはtcshであり、Debianではそのdashであるという多くの記事を読みました。しかし、私がecho $Shell(FreeBSD)またはDebianではenv、最初のケースではシェルはcsh、Debianではbashであると表示されます。

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

それらのシステムの下での公式の標準シェルは何ですか? FreeBSDではtcshまたはcshですか? Debianではdashまたはbashですか?

何か悪いことをするのは私ですか?または、記事やサイトに誤った情報がありますか?

Debian用とFreeBSD用の2つのシェルを学びたいのですが、どちらが公式のシェルであるかが明確でないため、どちらを学ぶべきかわかりません。

また、どのシェルを学習する必要があるかを検索しているときに、次のことがわかりました。 http://www.faqs.org/faqs/unix-faq/Shell/csh-whynot/cshが好きではありませんか、それともcshを本当に避けるべきですか?

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

私はこれらすべてのシェルオプションで迷子になり始めました、それらはすべて私には同じように見えます(構文を除いて;私はそれらがすべて同じ可能性を提供するように見えることを意味します)。だから私は公式のものを学びたいのです。

7
user1115057

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

命名に気をつけてください。 /bin/cshが実際にtcshであるか、/bin/shがbashまたはkshであるのは珍しいことではありません。

BourneShellであるshは、現在も一般的に使用されている最も古いUnixシェルです。 bashはおそらく最も広く使用されているsh派生物です。 kshzshも普及しています。

Cシェルであるcshは、BillJoyによってBSD用に開発されました。 shよりも(または少なくとも当時存在していた古いバージョンのshよりも)便利なインタラクティブな使用を可能にするいくつかの機能があります。 tcshcshから派生し、多くの新機能を追加します。それらのほとんどはインタラクティブな使用を目的としています。 csh.whynot を読んで見たように、cshとtcshは、インタラクティブではなくスクリプトに使用する場合にいくつかの問題があります。

個人的には、cshから始めて、利用可能になったときにtcshに切り替えました。私は現在、スクリプトにcshを使用することはめったになく、shまたはbash(またはかなり複雑なものにはPerl)を好みます。

(更新、数年後:tcshを放棄して以来、bashをインタラクティブに使用しています。)

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

同じシェルをインタラクティブに使用してスクリプトを作成する必要はありませんが、混乱を避け、学習曲線を短くすることができます。

kshはおそらくbashとほぼ同じくらい強力であり、zshはさらに強力です(そして、私が時間をかけて学ぶことのなかった多くの機能を備えています)。

FreeBSDとDebianの両方(および使用する可能性のある他のUnixライクなシステム)、およびインタラクティブな使用とスクリプトの両方に対して、bashをお勧めします。しかし、他の選択は完全に合法であり、いくつかはあなたにより適しているかもしれません。

14
Keith Thompson