Bourne Shell
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Bourne Shell(ボーンシェル)は、Unix Version 7のシェルであり、それまでのThompson Shellを置き換えた(いずれもコマンド名は sh である)。開発者はAT&Tベル研究所のスティーブン・ボーン。Version 7 Unixの一部として1977年に大学等に配布された。UNIX系オペレーティングシステムでは現在もデフォルトのシェルとして一般に使われている。Bourne Shell (またはその互換プログラム)の実行ファイルは多くのUNIXシステムでは /bin/sh に置かれ、現在もUNIX系システムの多くが root (スーパーユーザー) のデフォルトのシェルとして使用している。
[編集] 特徴
以下に列挙する Version 7カーネルの2つの重要な機能を利用することが Bourne Shell の主要な目標であった。
- 従来 127バイトに制限されていたパラメータリストが、Version 7 では 8192バイトに拡張された。
- 環境変数。これは Version 7 の新しい機能であり、プログラム起動時に多くの補助的な情報を渡すことが可能となった。
Bourne Shell はまた、エラーメッセージのために 2番のファイル記述子を使うという規定を最初に採用したプログラムでもある。これにより、エラーメッセージをデータと分離してスクリプトで制御することが容易になった。
対話形のコマンドインタプリタとしても使われるが、スクリプト言語としての性格が強い。ブライアン・カーニハンとロブ・パイクによる『UNIXプログラミング環境』の出版が Bourne Shell の人気を高めた。これはチュートリアル形式でプログラミング言語としてのシェルを紹介した最初の商業出版本である。
数年の内に AT&T は Bourne Shell を強化した。各バージョンは対応する AT&T UNIX のバージョン名で呼ばれる(主なバージョンは Version 7、SystemIII、SVR2、SVR3、SVR4)。というのも、シェルはバージョン番号が付与されていないからでもあり、区別するには実際に機能をテストしてみる必要があった。
スティーブン・ボーンは自身がケンブリッジ大学で関わっていたALGOL 68Cコンパイラのいくつかの特徴をこのシェルに取り込んだ。例えば、"if ~ then ~ else ~ fi
"、"case ~ in ~ out ~ esac
"、"for ~ while ~ do ~ od
" といった構文である。さらに Version 7 のシェルはC言語で記述されているが、ボーンはそのソースコードをALGOL68風にするためにいくつかのマクロを使っている。
[編集] 関連するシェル
C Shell(csh)は 4.1BSDで配布され、BSDカーネルの「ジョブ制御」機能を導入した。ジョブ制御は対話的にプログラムを止めたり、後でそれを再開させる機能である。C Shell がコマンドインタプリタとして人気になったのはこの機能があったためである。また C Shell は C言語風の文法を採用したことにより Bourne Shell と互換性がなくなってしまった。
後にデビッド・コーンが開発したKorn Shell(ksh)は、Bourne Shell と C Shell の中間のようなもので、文法はほぼ Bourne Shell と同一で、ジョブ制御機能を C Shell から取り入れた。
Bourne Again Shell(Bash)は、その名が示す通り Bourne Shell を基本として C Shell や Korn Shell の機能を取り入れ、GNUプロジェクトの一部として開発された。
Kenneth Almquist が開発した Bourne Shell のクローンは Almquist Shellとも呼ばれ、現在も使われている。
サンが OpenSolaris の中の Bourne Shell の派生版をオープンソースとしてリリースすると、他のフリーなUNIX系OS向けにこれを移植するHeirloomプロジェクト が開始され、利用可能となっている。