UNIX/Linuxのシェルとカーネルとは?
![](https://piyolabo.net/wp-content/uploads/2019/03/650shell01.jpg)
シェルとカーネル
シェル( shell )は「殻」のことです。
linuxのシステム部分の「核」にあたる部分をカーネル( Kernel )と呼びます。
カーネルは、アプリケーションがシステムコールという方法を使ってアプリケーションとハードウェア(CPU、メモリーやハードディスク、ネットワーク接続など)の橋渡しをします。
シェルは、LinuxのCUI上(ktermなどターミナルソフト)でインターフェイスの役割を担っていてコマンドを受け付けたり、結果を出力します。
→ 京都産業大学が公開されているページがわかりやすいです。
シェルとは
UNIX / Linux でターミナルソフト (kterm など)を利用する場合、ユーザはプロンプトで操作目的のコマンドを入力し、そこで表示される結果を見てまた次のコマンド入力を行う、というサイクルで対話的な作業を行います。本当は UNIX / Linux の中核(kernel: カーネル)が管理している機能を用いて、ユーザは様々な処理を行っているのですが、カーネル自身はユーザと直接対話する能力を持っていません。
そこで、ユーザと対話する能力を持ち、カーネルに対して操作のお伺いを立てる仲介役のプログラムが、ユーザとカーネルの間に存在してユーザは操作を行います。
この仲介役プログラムは、ユーザから見てカーネルの周りをすっぽり覆っている「殻」(shell) のように見えることからシェルと呼ばれます。
簡単に言えば、シェルは、ユーザが入力したコマンドを解釈してカーネルに処理を依頼し、その結果やメッセージなどを画面に表示する機能を持っているのです。京都産業大学 シェルの概念と機能 より
![シェルとカーネル](https://piyolabo.net/wp-content/uploads/2019/03/kernel-shell00.png)
- Linuxを起動
- カーネルがコンピュータの状態を初期化
- アプリケーションが実行できるようになる。
- アプリケーションがコンピュータのハードウェアとやり取りする
↓
↓
↓
シェルとシェルスクリプト。用語の使い方に注意
UNIX/Linuxを使っているのなら、「シェル」「カーネル」そして「システムコール」の役割が分かっていて、シェルとシェルスクリプトの用語の使い方を理解していれば十分です。(シェルはプログラム言語そのもの。シェルスクリプトはプログラミングの一種と考えるとわかりやすいですね。)
家電製品に利用されている「組み込みLinux」(テレビや携帯電話[アンドロイド]、プリンタなど)の開発をするエンジニアを目指すのであれば、カーネルやシステムコールに関して深い理解が必要になります。
シェルスクリプトとは?
script = 台本 ですね。
シェルスクリプトは、UNIX/linuxのシェルが解釈できる命令(コマンド)をつなげて実行できるようにした台本です。Windowsのバッチファイル( .bat )のUNIX/Linux版です。
シェル( shell )の種類
- bash
- csh
- ksh
- Bash
sh Bourne シェル(ボーンシェル)。初期のUNIXの標準シェル。
csh Cシェル。BSD系UNIXの標準シェル。
tcsh Cシェルの上位互換シェル。FreeBSDの標準シェル。
Bash バッシュ。GNUプロジェクトによるシェル。
Ubuntu をインストールしている人の大半のシェルは「bash」だと思います。
$ echo $SHELL
とコマンドを打つと確認できます。