新人SEシリーズ番外編07

シェルの概念

ユーザが入力したコマンドいうものはどういった流れで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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。