Linux

【Linux】のシェルについて徹底解説

今回はLinuxで避けては通れない、シェルについて解説していきます。

シェルとは簡単に言うと、ユーザーから受けた命令を、
実行元であるカーネルに渡したり、実行結果を受け取ったりするソフトウェアです。

これだけでは分からない事がたくさんあると思うので、本記事で理解を深めていきましょう。

今回は以下の内容になっています。

シェルとは

シェルを一言で言うと、カーネルのインターフェイスになっているソフトウェアです。
カーネルとは、コンピューターを動かすOSです。
すなわち、シェルがユーザーから指令を受け取り、それをカーネルに伝え実行されるのです。

要は、シャルはユーザーとコンピューターを動かすOSの架け橋的存在です。
シャルが存在しない限り、コンピューターは指令を受け取れないので、非常に大切な存在です。

シャルとカーネルの関係性については後述します。

では、シェルが具体的にどのような処理を行っているか説明します。

例えば、ユーザーがターミナルでdateと言うコマンドを打つと、シェルがそれを受け取り、カーネルに伝えます。
その後、カーネルが年月日を取得して、それをシェルに渡し、ターミナル上に出力します。

このように、シェルはユーザーとカーネルの架け橋的存在なのです。

 

カーネルとシェルの関係性

カーネルとシェルは絶対に切り離せない関係です。

先ほど説明したように、カーネルはコンピューターのOSなのです
しかし、カーネルはユーザーの指令を直接受け取る事ができないので、シェルが存在します。
シェルがカーネルに指令を渡すのです。

カーネルとシェルが連携しているからこそ、コンピューターが動きます。

カーネルとシェルの分担を、処理の流れに沿って見てみましょう。

  1. シェルがユーザーからターミナルで指令を受け取る
  2. シェルが受け取ったコマンドを探す
  3. カーネルがコマンドを実行する
  4. シェルが結果を画面に表示する

この様にシェルだけあってもコマンドを実行できないし、カーネルだけでも指令を受け取れないって事がわかりますね。

カーネルとシェルを人間で表すと、脳と体って感じです。

ターミナルとシェルについて

ターミナルと言う言葉が何度か出ましたが、実はターミナルとシェルは全くの別物です

ターミナルとは、ユーザーがコンピューターに出力するハードウェアを指します。
しかし、現在はハードウェアとして使われる事はほぼなく、
ターミナルをソフトウェアとして実装したターミナルエミュレーターと言う物が使われています。

ここで注意して欲しい事は、ターミナルは入出力の画面を提供するだけのソフトウェアと言う点です。
ターミナルで入出力を受け取ると、それ以降はシェルが処理を行います。

要は、ターミナルに出力した内容をシェルが受け取り、シェルがコマンドを探したり、
カーネルに指令をだすと言う事です。

この様に、ターミナルとシェルは異なる物です。
一緒の物と勘違いしない様に注意した方が良さそうですね。

終わりに

シェルについての理解が深まったでしょか?

おさらいをすると、シェルはユーザーからの指示を受け取りカーネルに伝える。
カーネルが指令された処理を実行。

といった形になります。

今後もLinuxの知識を発信していくいのお楽しみに!