Unixシェル

Unixシェルは、Unix系システムにおけるコマンドラインシェルである。プロセスとして起動したい1個ないし複数のコマンド名をパイプラインなどとしてつなげた「ジョブ」を記述したり、それを複数並べたテキストファイルによるシェルスクリプトを実行する。

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

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

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

概念

「シェル」を最も広い意味で捉えれば、コマンドを入力するためにユーザーが使用するプログラム、といえる。シェルはオペレーティングシステム (OS) の詳細を隠蔽してシェルのインタフェースだけをユーザーに提示し、OSの中核部であるカーネルインタフェースの技術的詳細とのやりとりを行う。Unix系OSでは、対話型セッションのためのコマンドラインインタフェースには様々な選択肢がある。ユーザーがシステムにログインすると(GUI環境でない場合は)シェルプログラムが自動的に実行開始する。このログインシェルはユーザー毎にカスタマイズできる。passwd ファイルで起動するシェルプログラムを指定でき、passwd -e コマンドまたは chsh コマンドで変更することもできる。また、ユーザーは別のシェルプログラムを対話的に起動することもできる。

Unixシェルが登場した当時、このようなプログラムは珍しかった。対話型のコマンド言語であると同時にスクリプト言語としても使え、システムの制御ファシリティとしてOS自体もそのスクリプトを使用している。シェルの考え方はUNIX以外にも広まっていった。

ウィンドウシステムを持つシステムでは、ユーザーがシェルを直接使わないことも多い。Unix系OSでは、システムの立ち上げスクリプト群がシェルスクリプトで書かれており、ウィンドウシステムの起動もインターネットへのアクセスのためのプログラム起動もその他の様々な機能の起動もそのようなスクリプトで行う。

Bourne Shell

Bourne Shell はUNIXの初期のバージョンから使われており、デファクトスタンダードとなっている。スティーブン・ボーンベル研究所で開発し、1977年ごろ Version 7 Unix の一部として配布された。Unix系OSには必ず Bourne Shell かその互換シェルが含まれている。コマンドとしての名称は sh で、UNIXのファイル階層では一般に /bin/sh というパスにある。しかし、/bin/sh は Bourne Shell と互換性がある機能拡張されたシェルへのソフトリンクまたはハードリンクになっていることもある。POSIXでは標準のシェル機能として KornShell のサブセットを指定している。ユーザーから見れば、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シェルの設定ファイルについてまとめたものである。

sh ksh csh tcsh bash zsh
/etc/.login login login
/etc/csh.cshrc yes yes
/etc/csh.login login login
~/.tcshrc yes
~/.cshrc yes yes[8]
~/.login login login
~/.logout login login
/etc/profile login login login login
~/.profile login login login[9] login
~/.bash_profile login[9]
~/.bash_login login[9]
~/.bash_logout login
~/.bashrc int.+n/login
/etc/zshenv yes
/etc/zprofile login
/etc/zshrc int.
/etc/zlogin login
/etc/zlogout login
~/.zshenv yes
~/.zprofile login
~/.zshrc int.
~/.zlogin login
~/.zlogout login

凡例:

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

脚注

  1. Re: Late Bloomers Revisited USENET post to comp.lang.misc by Piercarlo "Peter" Grandi, Dept of CS, UCW Aberystwyth, UK, Dec 17, 1989.
  2. The MiriBSD Korn Shell”. MirOS. 2012年7月8日閲覧。
  3. Harley Hahn, Harley Hahn's Guide to Unix and Linux.
  4. Hamilton C shell for Windows Release Notes 4.0, retrieved June 19, 2010.
  5. es-shell”. Google Code. 2012年7月8日閲覧。
  6. pysh”. Sourceforge.jp. 2012年7月8日閲覧。
  7. Zoidberg”. CPAN. 2012年7月8日閲覧。
  8. ~/.tcshrc が見つからない場合のみ
  9. 実際には ~/.bash_profile~/.bash_login~/.profile の順で最初に読み取り可能なファイルだけを読み込む。sh として呼び出されたときは ~/.profile のみを読み込む。

参考文献

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

関連項目

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.