カーネルとシェル

シェルにはshやbash、kshなど複数の種類があり、シェルを通してコマンドを実行させることができます。ただ、GUI環境で、プログラムを実行したりコピーなどができるWindows Explorerもグラフィカルシェルと呼ばれています。カーネルとシェルの関係からシェルの正体と、役割を簡単にご紹介したいと思います。

シェルはカーネルとの架け橋

カーネルとは、プログラムとハードウェアを仲介するプログラムです。つまりCPUやメモリ、ハードディスクなどにアクセスする手段を提供する役割を担っているのがカーネルです。

ただ、カーネルはCPUが解釈可能な機械語で通信を行いますので、そのままでは人がコンピュータに命令を送ることが困難です。そこで、シェルを使いユーザが入力した情報をカーネルにも解釈できる機械語に変換してもらうのです。

シェルはスクリプト言語

シェルはインタプリンタ形式のスクリプト言語と言っても良いのかもしれません。シェルスクリプティングをやったことが無い方は、シェルがプログラミング言語という感覚はしないかもしれませんが、シェルのフォーマットを見ていただくと、シェルそのものがプログラミング言語だと実感していただけると思います。

まず、環境変数はグローバル変数で、コマンドは関数です。つまり、ls と入力しただけだとしてもそれは、立派なシェルスクリプトなのです。そして、そのシェルスクリプトがインタプリンタで機械語に変換されてカーネルに渡されます。

ただ、CUIのシェルの場合、履歴や補完機能などプログラミング言語と断定できない部分もあります。グラフィカルシェルの場合は、GUIによる操作なので、プログラミング言語は言いづらいかもしれません。しかし、内部的にはスクリプト言語として動作していることを意識すれば、少しシェルとは一体どういうものなのかイメージしやすくなったのではないでしょうか。