異なるシェルスクリプトを異なる OS にマッピングする方法

異なるシェルスクリプトを異なる OS にマッピングする方法

Linux を初めて使用しており、シェル スクリプトについていくつか質問があります。

  • シェル
  • Cシェル
  • Bashシェル
  • ボーンシェル
  • コーンシェル

たくさんの「シェル」があります。これらに関して、Linux システムがどのインタープリタ用に構成されているかを知るにはどうしたらよいでしょうか。たとえば、をサポートしていない場合、kornそれをサポートするようにシステムを構成するにはどうすればよいでしょうか。

また、これらのシェルのうち、最も「アクティブ」な(最も頻繁に更新およびメンテナンスされている)のはどれでしょうか?

前もって感謝します!

答え1

あなたが取り上げた問題は、まさに私たちがPOSIX準拠シェルそして、「移植可能な」コードを作成する機能。そのリンクに示されている POSIX 準拠の構文に従っている限り、コードが移植可能であることは間違いありません。

そうは言っても、対象ユーザーが Linux のみである場合、私がこれまでに見たすべての Linux ディストリビューションにbashはデフォルトのシェルが付属しているため、Bash 3.x 準拠のスクリプトはほぼすべての Linux ディストリビューションで動作すると確信できます。

答え2

最初の UNIX は AT&T で登場しました。最初のシェルは Bourne シェルでした。非常に優れたシェルでしたが、重大な制限がいくつかありました。

の人たちがバークレーUNIXをいじって改良しようとして、Cシェルが生まれました。Cシェルは異なるプログラミング言語でした(独自の欠点もあるが) でしたが、対話型の使用には非常に優れていました。対話型の使用における利点のため、Berkeley UNIX から派生したすべての UNIX で非常に人気がありました。

C シェル (または csh) は、tcsh と呼ばれるオープン ソースのクローンを生み出しました。csh を使用する場合は、おそらく「真の」またはオリジナルの csh ではなく、tcsh を使用するでしょう。

一方、UNIX の人たちも手をこまねいているわけにはいきませんでした。Dave Korn (ナイスガイ) が Korn シェルという新しいシェルを作成しました。これは Bourne シェルが作成したプログラミング モデル (csh モデルよりも優れていると主張できます) に準拠しています。これは非常に人気を博し、多くの人が日常的に使用するシェルになりました。また、UNIX 仕様の一部にもなりました。これにより、かなり互換性が高い (100% ではありませんが) オープン ソースのクローンである pdksh が誕生し、人気が高まりました。最終的に AT&T がコードをオープン ソースとしてリリースしました。

GNU の人たちは、独自の UNIX 風システムを作りたかったので、ライセンスの問題を気にせずに組み込めるシェルが必要でした。そこで、彼らは Bourne Again SHell である bash を作成しました。オリジナルの Bourne とほぼ互換性があり、Csh と Ksh の両方からアイデアを取り入れたこのシェルは、使いやすさとすべての Linux に付属していたことから人気を博しました。いくつかのバージョンがあり、バージョン 2 は最初の非常に使いやすいバージョンで、現在は新機能を備えたバージョン 4 になっています。

その後、zsh が登場しました。これも Bourne シェルの構文に従い、Bourne シェル、ksh、csh、bash の優れた部分をコピーしました。他のシェルにはない機能を備えた、最も高度な構文を備えていると言えます。

要約では、何を使うべきでしょうか? 起動スクリプトをコーディングする場合は、POSIX/Original Bourne 互換の /bin/sh を使用します。この言語は貧弱ですが、/usr などのディスクが利用できない場合でも実行されます。

起動スクリプトでない場合は、もう少し選択肢があります。自分のマシンだけを使用している場合は、現在利用可能なものを使用してください。自分のマシンは自分で管理します。他の人に配布するために書いている場合は、/bin/sh または bash を使用します。/bin/sh はシンプルですが、常に利用可能です。bash はオープン ソースなので、ほぼ常に利用可能で、どこにでもあるほど古く、いくつかの新機能を備えているほど新しいです。csh はどこでも利用できるわけではなく、zsh も同様です。

関連情報