Unixシェルは、Unix系オペレーティングシステムで用いられるコマンドラインシェルの総称である。

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

1970年代にUnix環境向けに設計されたコマンド解釈言語およびその処理系として成立し、以後のUnix系システムにおける標準的な操作手段およびスクリプト実行環境として位置づけられる。

システム管理、プログラム起動、処理自動化などに用いられ、パイプライン処理、入出力リダイレクト、制御構造を備えた独自のコマンド言語を特徴とし、その実装は多様な派生シェルを生んだ。

概念

編集

「シェル」を最も広い意味で捉えれば、コマンドを入力するためにユーザーが使用するプログラムといえる。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 UnixのThompson 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[注釈 1]
~/.login login login
~/.logout login login
/etc/profile login login login login
~/.profile login login login[注釈 2] login
~/.bash_profile login[注釈 2]
~/.bash_login login[注釈 2]
~/.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. ↑ ~/.tcshrc が見つからない場合のみ
  2. 1 2 3 実際には ~/.bash_profile、~/.bash_login、~/.profile の順で最初に読み取り可能なファイルだけを読み込む。sh として呼び出されたときは ~/.profile のみを読み込む。

出典

編集
  1. ↑ “The MiriBSD Korn Shell”. MirOS. 2012年7月8日閲覧。
  2. ↑ “Use zsh as the default shell on your Mac - Apple Support”. Apple. 2022年4月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. ↑ “Zoidberg”. CPAN. 2012年7月8日閲覧。

参考文献

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

関連項目

編集

外部リンク

編集