シェルの概念
ユーザが入力したコマンドいうものはどういった流れでUNIX/Linuxが実行するのか
その流れについて記述する
ユーザが入力したコマンドはまず「シェル(shell)」というものに渡される
シェルとは入力したコマンドを解釈してカーネルへと渡し
コマンドを処理するためのプログラムのことである
つまりは翻訳者である
ここでカーネル,シェル,コマンドについて軽くおさらいしておく
カーネル:ハードウェア・ソフトウェアを制御するOSの核となるプログラム
シェル:ユーザが入力したコマンドを解釈しカーネルへ実行依頼するためのプログラム
コマンド:ユーザがUNIX/Linuxへ指示する命令
実際のコマンドの流れ
ユーザ→コマンド(命令)→シェル→カーネル→シェル→ユーザ(ディスプレイ)
少し分かりにくいのでレストランを例えにして考えてみる
お客さん:ユーザ
ウェイター:シェル
コック:カーネル
1:お客さんがウェイターに料理をオーダーする
=ユーザがシェルへコマンドを指示する
2:ウェイターはコックへオーダーを渡す
=シェルはコマンドを解析して対応する処理プログラムを呼び出し、カーネルへ実行を依頼する
3:コックは料理を作りウェイターへ渡す
=カーネルはコマンドを実行しシェルへと結果を返す
4:ウェイターはお客さんへ料理を出す
=シェルはユーザへ結果を返す
※コックでもオーダーが分かるという話はなしで考える
ところでシェルにはいくつか種類がある
UNIXのSystemⅤ系では「標準シェル(Bシェル)」
UNIXのBSD系では標準シェル+αの「Cシェル」
Linuxでは標準シェルの機能拡張版である「BourneAgainシェル」。通称:bash
この他にも「Kornシェル(ksh)」「TCシェル(tcsh)」「POSIXシェル」がある
シェルの切り替え
基本的にユーザがログインする際に利用するシェルはスーパーユーザによって設定されている
しかし、ログイン後に変更することができる
シェルの切り替えはコマンドで指定するだけで簡単にできる
sh、csh、bashなど
シェルを指定するコマンドを入力すれば切り替え可能
終了はexitコマンドでできる
シェルは目的や用途に応じて選択する
現在使っているシェルを確認したい場合はpsコマンド利用すると確認できる
psコマンド:プロセスの表示
話の途中で何故、コマンドを直接カーネルへと渡さないのかと考えたかもしれない
これは、カーネルがコマンドを直接理解できないからである
そのため、一度コマンドをシェルへ渡しカーネルが分かる形に翻訳する必要がある
まさしくシェルはユーザとカーネルの翻訳者なのである
以上である
この文章がみなさんの少しでも役に立てば僥倖である
最終更新:2009年07月09日 22:42