基本的に、これまで使用したことのないシステムには、実際の実行可能ファイルとして/bin/sh
がないことがわかりました。これは常に、POSIXモードのdash
、bash
などのシンボリックリンクです。
どうして?真のオリジナル/bin/sh
を使用するデメリットは何ですか? (速度?ライセンス?)
私は機能がないと思います-コマンド履歴、派手なリダイレクト、コマンドライン編集はありません。 BSDは、これらの理由からCシェルcsh
を導入しました。もう1つの要因は、本物のBourne Shellが 最近、オープンソース形式で利用可能 であったことです。ライセンスを取得しない限り、配布することはできません。そのため、無料のディストリビューションでは対応できず、他のディストリビューションや* BSDではイデオロギー的に不快なものになりました。
しかし コードが利用可能 になりました。見て、コンパイルして、試してみることができます。
あなたの質問の文は正しくありません。 Solarisバージョン10までisレガシーの真のBourne Shellを/bin/sh
として提供します。これは、別のシェルで失敗する可能性のある古いスクリプトとの互換性を損なわないようにするために行われました。そうでなければ、この選択は非常にイライラしました。
Solaris 11を含むほとんどすべてのUnixおよびUnixのようなリリースは、POSIX互換シェルを/bin/sh
として提供します。これは、POSIXが準拠しない従来のBourne Shellではなく、sh
コマンドを使用してPOSIX Shellを起動するためです。 /bin/sh
は通常:
ksh88
またはksh93
OS/X
のbash
の変更(以前はzsh
でしたが)ash
のpdksh
またはBSDs
派生物bash
またはdash
。これは必ずしもリンクである必要はありませんが、Gnu/Linux以外の多くのシステムで実際の実行可能ファイルにすることができます。
興味深いことに、あなたの質問に対する最も賛成の回答が何であるかにかかわらず、ディストリビューション開発者が/bin/sh
にレガシーBourne Shellとは異なるものをインストールする機能を欠いているわけではありませんが、可能な限りPOSIXに準拠することを望んでいます。つまり、UnixのようなOSのように動作します。 POSIXシェルが従来のBourneシェルよりも多くの機能を備えているという事実は、この標準準拠目標の副作用にすぎません。
また、一部のシェル、特にbash
は、sh
と呼ばれると動作が異なり、これは主にシェルから機能を削除しますが、その逆ではありません。
私の知る限り、オリジナルのBourne Shellは、そのライセンスのため、BSDおよびGNUプロジェクトでは使用できませんでした。
当時、元のUnixにはライセンスがなく、GNUプロジェクトにはGPLに基づくシェルが必要だったため、bashを使用していました。
同じことが、すべてのBSDの親であるBSD4にも当てはまります。 AT&Tの訴訟のおかげで、Bourne Shellを含む元のUnixからのすべてのソースを書き直す必要がありました。
従来のBSDラインでは、Bourne Shellは4.3BSD-Renoまで出荷されていました(ただし、Net/2と次の4.4BSDではもうありません)。ライセンス上の理由から、ケネスアルムキスト(しばしばashと呼ばれる)によってボーン互換のsvr4のようなshに置き換えられました。
FreeBSDから man sh
ShコマンドのThompson Shellは、Version 1 AT&T UNIXで登場しました。バージョン7のAT&T UNIXでは、shという名前を継承したBourne Shellに置き換えられました。
このバージョンのshは、AT&T System Vリリース4 UNIXのBourne Shellの後、1989年にBSDライセンスの下で書き直されました。
そのため、どちらのプロジェクトもBourne Shellを使用せず、真のオープンソースシェルを採用することを余儀なくされました。
他にも問題がありました。 Bourne Shellは、malloc()の代わりにsbrk()を使用していたため、移植性が低くなりました。
Bourne ShellがOpenSolarisを介してOpenSourceになった後、hafwayポータブルバージョンを作成し、後にsbrk()をmalloc()でGeoff Collyerの助けを借りて置き換えました(同じ人がKorn Shell)。
Bourne Shellのポータブルバージョンを作成した最初の理由は、1982年から1984年の間に「bsh」用に作成した履歴エディターをBourne Shellでも使用できるようにしたかったからです。その間、私は「bsh」用に記述した独自の特性のほとんどをボーンシェルに移植しました。
これはとりわけ:
オンラインのmanページは次の場所にあります。 http://schillix.sourceforge.net/man/man1/bosh.1.html ソースはschilyツールボックスの一部です:
https://sourceforge.net/projects/schilytools/files/
私は以下を使用することをお勧めします: http://sourceforge.net/projects/schilytools/files/schily-2015-08-18.tar.bz2 または新しいバージョン。
追伸フィードバックに興味がある