Unixシェル

KDE Plasma 5セッションのzsh、bash、およびkshシェルウィンドウ

Unixシェルは、Unix系システムにおけるコマンドラインシェルである。ユーザーインターフェースとして対話的に利用したり複数のコマンド並べたシェルスクリプトを実行する。

最も影響を与えたUnixシェルとしては、Bourne ShellC Shell がある。Bourne Shell は単に sh と呼ばれ、AT&Tでスティーブン・ボーンが開発し、UNIXで広く普及していたコマンドラインインタプリタである。パイプヒアドキュメントコマンド置換英語版変数、条件式やループと��った制御構造ワイルドカードによるファイル名指定などの機能が他の全てのUnixシェルに共通する機能の出発点となった。言語としては、ブロックの終りを逆から綴った (ファイル)キーワードで示すなど、ALGOL 68 に影響を受けている。

C Shell (csh) はビル・ジョイカリフォルニア大学バークレー校の大学院生のときに開発した。C言語をモデルとして制御構造や式の文法を設計している。対話型シェルとして、ヒストリ機能、編集機構、エイリアス、ディレクトリスタック、チルダ記法、cdpath、ジョブコントロール、パスハッシングといった機能を導入した。

これら2つのシェルがベースとなって、様々なシェルが派生していった。

概念

「シェル」を最も広い意味で捉えれば、コマンドを入力するためにユーザーが使用するプログラムといえる。Unix系OSでは、対話型セッションのためのコマンドラインインタフェースには様々な選択肢がある。ユーザーがシステムにログインすると(GUI環境でない場合は)シェルプログラムが自動的に実行開始する。このログインシェルはユーザー毎にカスタマイズできる。passwd ファイルで起動するシェルプログラムを指定でき、passwd -e コマンドまたは chsh英語版 コマンドで変更することもできる。また、ユーザーは別のシェルプログラムを対話的に起動することもできる。

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 UnixThompson shell をベースとしている。C言語をモデルとして構文規則を設計した。対話型の端末で使用することを第一に考えて設計されており、スクリプト言語としてはあまり使われない。C Shell には様々な対話用コマンドがある。

分類

Bourne Shell 互換

C Shell 互換

その他

様々なシェルの一覧は www.freebsd.org にある。

歴史的シェル

主なUnixシェルの設定ファイル

シェルは様々な場面で設定ファイルを読み込むが、詳細はシェルの種類によって異なる。設定ファイルにはそのシェル向けのコマンド群が書かれており、ロードされると同時に実行される。実行ファイルの探索パスを指定する $PATH のような重要な変数を設定したり、シェルの振る舞いや見栄えを制御する変数を設定したりする。次の表は代表的なUnixシェルの設定ファイルについてまとめたものである。

凡例:

  • 空白のマスは、そのシェルではそのファイルを全く読み込まないことを意味する。
  • "yes" - そのシェルの起動時に必ず読み込む。
  • "login" - そのシェルがログインシェルだった場合に読み込む。
  • "n/login" - そのシェルがログインシェルでなかった場合に起動時に読み込む。
  • "int." - 対話型のシェルとして起動した場合に読み込む。

脚注

注釈

出典

参考文献

  • Ellie Quigley (2001). “Introduction to UNIX shells”. Unix Shells by Example. Prentice Hall PTR. ISBN 013066538X  — 各種シェルの歴史と使用法など

関連項目

外部リンク

Uses material from the Wikipedia article Unixシェル, released under the CC BY-SA 4.0 license.