シェルの概要についてわかりやすく解説していきます。
プログラマであれば、日常的に使うことになりますのでシェルの概要を理解していきましょう!
シェルとは
シェルとは、OSとのインターフェイスを提供するアプリケーションのことです。
ユーザーの命令を解釈しOSに伝え、OSの結果をユーザーに返却する役割があります。
OSとはコンピュータの脳の部分で、OSが命令を出しています。
カーネルとはOSの中核部分をいいます。
モグモグさん
OSについてはこちらで紹介しています。
シェルがあることで、OSとの対話を抽象化したり直接命令を送りOSを破壊することを防ぐことができます。
処理の流れ
それでは処理の流れを例に具体的にシェルをイメージしていけるようにしましょう。
シェルはあくまでインターフェイスを提供するアプリケーション(ソフトウェア)であるため、ユーザーからの入出力は受け付けられません。
そこで利用するのが、ターミナルです。
ターミナルはユーザーの入力とユーザーへの出力部分を担うソフトウェアです。
シェルとターミナルは別ものなので、それぞれの役割を理解しましょう!
ターミナルの種類
代表的なターミナルは下記のようなものがあります。
Windows | Mac | Ubuntu |
---|---|---|
Git Bash | iTerm2 | Konsole |
PowerShell | Terminal | GNOME Terminal |
処理の流れを図解
処理の流れを図と共に説明します。
- ユーザーがターミナルでコマンドを入力
- シェルが解釈しOSに伝える
- OSからの結果をシェルがターミナルに伝える
- ターミナルが結果をユーザーに出力
グラフィカルシェル
ここまでは、コマンドでシェルを利用する想定で説明してきましたが
GUI(グラフィカル・ユーザー・インターフェイス)で扱うシェルも存在します。
マウス操作などが可能なのでプログラマやエンジニア以外も扱いやすいです。
シェルの種類
シェルとは?については理解できましたでしょうか?
ここでは、シェルの種類について解説していきます。
B-shell系とC-Shell系
シェルは大きく分けると、B-Shell (Bourne-Shell) 系、C-Shell系のシェルに分けられます。
まずは、B-Shell系
から紹介します。
sh (Bourne shell)
現在利用可能なシェルで最も古いです。
開発者の1人であるSteven Bourne 氏にちなんで命名されました。
ほとんど全ての UNIX で利用できる標準的なシェルであるため、 シェルスクリプトの作成によく用いられます。
bash (Bourne Again shell)
最近のLinuxやMacOSで標準のシェルです。
ユーザーインターフェイスとしての機能が充実しています。
zsh
bachやtcshの機能を拡張しています。
多機能なshellです。
続いて、C-Shell系
です。
csh
C言語に似た構文を持つことから命名されています。
ユーザーインターフェイスの機能が充実しています。
tcsh
cshの上位互換です。
全て覚える必要はないので、
それぞれの特徴をざっと理解しておきましょう!
シェルのまとめ
シェルについて理解できましたでしょうか?
最後に学習した内容をまとめます。
- シェルとはOS(カーネル)とのインターフェイスを提供するアプリケーション
- ユーザーからの命令を解釈しOSに伝え、結果を返す
- ユーザーからの入出力はターミナルを使う
- シェルにはB-Shell系とC-Shell系がありそれぞれの特徴を持つ