Unixシェル

Unixシェルとは



Unixシェルは、Unix系オペレーティングシステムにおけるコマンドラインインターフェースとして機能するプログラムです。ユーザーはシェルを通じて、コマンドを直接入力したり、複数のコマンドを組み合わせたシェルスクリプトを実行したりすることで、システムを操作します。シェルは、ユーザーとカーネルの間を取り持ち、ユーザーの指示をシステムに伝える役割を果たします。

シェルの概念



広義のシェルは、ユーザーがコマンドを入力するために使用するプログラム全般を指します。Unix系OSでは、対話的なコマンドラインインターフェースとして様々なシェルが利用可能です。ユーザーがシステムにログインすると、自動的にシェルプログラムが起動し、これを「ログインシェル」と呼びます。このログインシェルはユーザー毎にカスタマイズでき、`passwd`ファイルで起動するシェルプログラムを指定したり、`passwd -e`コマンドや`chsh`コマンドで変更したりできます。また、ユーザーは必要に応じて別のシェルプログラムを起動することも可能です。

初期のシェルは、対話型のコマンド言語であると同時にスクリプト言語としても使われ、システム制御の中核を担っていました。この概念はUnixに限らず、他のOSにも影響を与えました。

主要なシェル



Unixシェルの歴史において特に重要な役割を果たしたのが、以下の2つのシェルです。

Bourne Shell (sh)
スティーブン・ボーンがAT&Tで開発したシェルで、パイプ、ヒアドキュメント、変数、制御構造など、現代のシェルの基礎となる多くの機能を提供しました。ALGOL 68の影響を受けた構文を持ち、UNIXシステムで広く普及しました。

C Shell (csh)
ビル・ジョイカリフォルニア大学バークレー校で開発したシェルで、C言語をモデルにした文法を持っています。ヒストリ機能、エイリアス、ジョブコントロールなど、対話的な操作に便利な多くの機能が導入されました。

これらのシェルをベースに、多くのシェルが派生し、現在に至っています。

シェルの分類



シェルは、その起源や機能に基づいていくつかのカテゴリーに分類できます。

Bourne Shell 互換


Bourne Shell (sh)
スティーブン・ボーンが開発したオリジナルのシェル。多くのUnix系システムで標準として採用されました。
Almquist Shell (ash)
Bourne ShellのBSDライセンス版。軽量でリソースの少ない環境でよく利用されます。
Bourne-Again shell (bash)
GNUプロジェクトで開発されたオープンソースのシェル。多くのLinuxディストリビューションで標準シェルとして採用されています。
Debian Almquist shell (dash)
DebianやUbuntuでashの代替として使用されています。
KornShell (ksh)
デビッド・コーンが開発したシェルPOSIX標準のベースとなりました。
Public domain Korn shell (pdksh)
kshからの派生版。
MirBSD Korn shell (mksh)
OpenBSDのkshの後継として開発されました。
Yet another shell (yash)
C99で書かれたPOSIX準拠のシェル
Z Shell (zsh)
多機能なシェルで、bash, ksh, tcshなどの上位互換の機能を持っています。macOS Catalina以降の標準シェルです。

C Shell 互換


C Shell (csh)
ビル・ジョイが開発したシェル。対話的な操作に重点が置かれています。
TENEX C shell (tcsh)
cshを拡張したシェル
Hamilton C shell
OS/2およびWindows向けに開発されたシェル

その他のシェル


es
関数型プログラミングを取り入れたシェル
Friendly interactive shell (fish)
ユーザーフレンドリーなインタフェースを持つシェル
Perl Shell (psh)
bashとPerlの機能を統合したシェル
pysh
Pythonとシステムシェルを統合したシェル
rc
Plan 9およびVersion 10 UNIXのデフォルトシェル
scsh
Schemeで記述されたシェル
wish
Tcl/Tk用のGUIシェル
zoidberg
Perlで記述されたモジュール型シェル

歴史的なシェル



Thompson shell (sh)
UNIX初のシェル。現代から見ると原始的な構造ですが、その後のシェルの基礎となりました。
PWB shell または Mashey shell (sh)
Thompson shellを改良したシェル

主な設定ファイル



シェルは、起動時やログイン時などに設定ファイルを読み込みます。これらのファイルには、シェルの動作や環境を設定するためのコマンドが記述されています。代表的な設定ファイルは以下の通りです。

シェル .profile .bash_profile .bashrc .zprofile .zshrc .cshrc .login .tcshrc /etc/profile /etc/bashrc
:- :-: :--: :-: :--: :-: :-: :-: :-: :---: :----:
sh login - - - - - login - yes -
bash login login int. - - - - - yes yes
zsh - - - login int. - - - yes -
csh - - - - - int. login - yes -
tcsh - - - - - int. login int. yes -


凡例:

空白: ファイルを読み込まない
yes: 必ず読み込む
login: ログインシェル時のみ読み込む
n/login: ログインシェルでない場合に読み込む
* int.: 対話型シェル時のみ読み込む

シェルは、Unix系システムを操作する上で欠かせないツールです。各シェルの特徴や設定を理解することで、より効率的なシステム運用が可能になります。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。