私の推測では、BASHが現在選択されているシェルであり、シェルユーザーの大部分を占めています。これはLinuxのデフォルトのシェルであり、LinuxはUnixの世界をほぼ引き継いでいます。(はい、Linuxは実際にはUnixではありませんが、非常に近いです)。
Cshは、SunOSとMac OS Xを含むBSDセットのドメインでした。ただし、バージョン10.4ではMac OS XがBashに切り替わり、SolarisがPOSIXシェルに切り替わりました(構文ではBashに似ています)。
ちょっとした歴史...
ほとんどのUnixユーザーは、デフォルトのシェルとしてCshを使用していましたが、Bourneシェルでプログラムされていました。Cshには、エイリアシングやコマンドライン編集などのBourneシェルに欠けている多くの機能があり、インタラクティブに使用すると便利でした。ただし、Cshは貧弱なプログラミングシェルでした。Cshに関するTomChristiansenの独創的な論文は、Cshでのプログラミングに関する契約を封印しました。真実は、BSDベースのシステムでさえスタートアップスクリプトなどでBourneシェルを使用していたということです。
Kornshellが出たとき、私は他の多くのユーザーと切り替えました。KornshellにはおなじみのBourneシェル構文がありましたが、Cshが持っていたパワーユーザー機能もありました。実際、Kornshellのコマンド履歴機能は、Cshのコマンド履歴よりもはるかに優れていました。Kornshellの最大の問題は、AT&Tが所有しており、オープンソースではなかったことです。ほとんどすべての商用Unixプラットフォーム(SunOSを除く)でKornshellを利用できました。ただし、オープンソースプラットフォームはKornshellを使用できませんでした。
Bashは、Kornshellの多くの機能を備えた真のOSSシェルとして1980年代後半に開発されました。ただし、BashはPOSIX標準(Kornshellの多くの機能を使用)に準拠しようとしました。
私はまだKornshellを好みます(主に習慣のため)が、より少ないシステムでそれを見つけています。私はほとんどの新しいUnixヘッドに、BASHが最も多くのリソースを持ち、最も簡単に利用できるので、BASHを学ぶように言います。
私の推奨事項は、Bash vs. Kornshell vs. Bourne Shellvs.Posixについてあまり心配しないことです。それらはすべてかなり同一です。Cshを忘れてください。Turbo Cshの公式ページは、2004年以降更新されていません。
シェルスクリプトを作成する場合は、すべてのボーンタイプのシェルに共通の機能を使用してください。orprintf
の代わりに使用する(Kornshellの機能)、andの代わりにandを使用するのは、二重中括弧がすべてのシェル間で完全に互換性があるわけではないためです。配列も避けてください。Bash 4.0はそれらをサポートしていますが、以前のバージョンはサポートしていません。Kornshellは数値配列と文字列配列の両方をサポートしていますが、Bashとは異なる方法で宣言されています。それでも、シェルスクリプトの機能の約90%が残ります。echo
print
[
]
[[
]]
さらに、より強力で高速なスクリプト言語であるPythonまたはPerlで書く方が本当に良いでしょう。さらに、どちらもさまざまなシェルよりもプラットフォームに依存しません。私はシェルスクリプトを書いていますが、数十行を超えて、実際のスクリプト言語に切り替えています。