【Linux】shellとは?概念と機能を解説してみた

今回はLinuxでよく聞く「shell」について紹介します。

 

shellとは?

shellとは人間が入力したプログラムをコンピューターに伝える一つのプログラミング言語です。

Windowsで使うコマンドプロンプトや、Macで使うターミナルで使われている言語がshellです。主にMac OSの方をshellと呼ぶ場合が多いですね。

他のプログラミング言語と同じように条件分岐や繰り返し処理なども行うことができます。

 

人間とコンピューターが直接やり取りすることはなく、その仲介役としてshellが存在します。人間が入力したコマンドはshellが受け取り、コンピューターに伝えます。

 

カーネルとは?

また、shellと一緒によく出てくるのが「カーネル」という言葉です。

カーネルとは、OSの中核を担っているソフトウェアのことです。カーネルがないとOSはOSとして機能しません。

ただし、カーネルだけでは何もできません。カーネルはシェルやデーモンなど、様々なソフトウェアと連携して使うことでOSを成り立たせています。

 

先ほどshellは人間が入力したプログラムをコンピューターに伝える言語と説明しました。このshellがプログラムを伝える伝達先がカーネルです。

つまり、人間とカーネルの仲介役がshellということになります。shellを触らずにカーネルに触ることはできません。

 

shellの種類

補足になりますが、shellにはいくつか種類があります。

具体的には以下の通り。

  • sh
  • ksh
  • bash
  • zsh
  • csh
  • tcsh

 

複数あるshellの種類ですが、実はタイプによって分類することができます。

  • sh系(sh/ksh/bash)
  • csh系(csh/tcsh)

zshはsh系とcsh系の中間みたいな感じです。どちらのタイプにも属しているという感じでしょうか。

このように、同じタイプのshellは使い方や特徴が似ている部分があります。