Unixシェル

Unixシェルは、Unix系システムにおけるコマンドラインシェルである。ユーザーインターフェースとして対話的に利用したり複数のコマンド並べたシェルスクリプトを実行する。
最も影響を与えたUnixシェルとしては、Bourne Shell と C Shell がある。Bourne Shell は単に sh と呼ばれ、AT&Tでスティーブン・ボーンが開発し、UNIXで広く普及していたコマンドラインインタプリタである。パイプ、ヒアドキュメント、、変数、条件式やループといった制御構造、ワイルドカードによるファイル名指定などの機能が他の全てのUnixシェルに共通する機能の出発点となった。言語としては、ブロックの終りを逆から綴った (ファイル)キーワードで示すなど、ALGOL 68 に影響を受けている。
C Shell (csh) はビル・ジョイがカリフォルニア大学バークレー校の大学院生のときに開発した。C言語をモデルとして制御構造や式の文法を設計している。対話型シェルとして、ヒストリ機能、編集機構、エイリアス、ディレクトリスタック、チルダ記法、cdpath、ジョブコントロール、パスハッシングといった機能を導入した。
これら2つのシェルがベースとなって、様々なシェルが派生していった。
概念.
「シェル」を最も広い意味で捉えれば、コマンドを入力するためにユーザーが使用するプログラムといえる。Unix系OSでは、対話型セッションのためのコマンドラインインタフェースには様々な選択肢がある。ユーザーがシステムにログインすると（GUI環境でない場合は）シェルプログラムが自動的に実行開始する。このログインシェルはユーザー毎にカスタマイズできる。codice_1 ファイルで起動するシェルプログラムを指定でき、codice_2 コマンドまたは codice_3 コマンドで変更することもできる。また、ユーザーは別のシェルプログラムを対話的に起動することもできる。
Unixシェルが登場した当時、このようなプログラムは珍しかった。対話型のコマンド言語であると同時にスクリプト言語としても使え、システムの制御ファシリティとしてOS自体もそのスクリプトを使用している。シェルの考え方はUNIX以外にも広まっていった。
ウィンドウシステムを持つシステムでは、ユーザーがシェルを直接使わないことも多い。Unix系OSでは、システムの立ち上げスクリプト群がシェルスクリプトで書かれており、ウィンドウシステムの起動もインターネットへのアクセスのためのプログラム起動もその他の様々な機能の起動もそのようなスクリプトで行う。
初期のシェル.
Bourne Shell.
Bourne Shell はスティーブン・ボーンがベル研究所で開発し、1977年ごろ Version 7 Unix の一部として配布され、当時のデファクトスタンダードであった。Unix系OSには必ず Bourne Shell かその互換シェルが含まれていた。コマンドとしての名称は sh で、UNIXのファイル階層では一般に /bin/sh というパスにある。/bin/sh は Bourne Shell と互換性がある機能拡張されたシェルへのソフトリンクまたはハードリンクである。POSIXでは標準のシェル機能として KornShell のサブセットを指定しており、現在はPOSIXシェルに置き換わったためBourne Shellは使われていない。
C Shell.
C Shell はビル・ジョイがカリフォルニア大学バークレー校でUnix系OSの一系統の元となったBSD向けに開発した。Version 6 Unixの Thompson shell をベースとしている。C言語をモデルとして構文規則を設計した。対話型の端末で使用することを第一に考えて設計されており、スクリプト言語としてはあまり使われない。C Shell には様々な対話用コマンドがある。
分類.
その他.
様々なシェルの一覧は www.freebsd.org にある。
主なUnixシェルの設定ファイル.
シェルは様々な場面で設定ファイルを読み込むが、詳細はシェルの種類によって異なる。設定ファイルにはそのシェル向けのコマンド群が書かれており、ロードされると同時に実行される。実行ファイルの探索パスを指定する $PATH のような重要な変数を設定したり、シェルの振る舞いや見栄えを制御する変数を設定したりする。次の表は代表的なUnixシェルの設定ファイルについてまとめたものである。
凡例: