今更だけどさ、シェルとターミナルって何が違うの?
突然ですが、シェル(shell)とターミナル(terminal)の違いって説明できますか。
「今更何を...」って思った方もいるでしょうが、筆者はできませんでした。
なので、今回はシェルとターミナルの違いを説明できるようにまとめていきます。
シェル
役割として簡単に言うと、ユーザーとコンピュータを仲介するコマンドラインインターフェイス(CLI) です。例として、Bash、Zsh、Fish、PowerShellがあります。
シェルを説明する前に、まずは「OS」「カーネル」の用語を知っておかなければなりません。
「OS」はオペレーションシステムと呼ばれ、コンピューターの人格みたいなものです。プログラムが動く環境を提供しています。例を挙げると、macOS、Windowsなどです。
「カーネル」はOSの中にあるソフトウェアです。他のソフトウェアからの指令を挟んで処理したり、ハードウェア(メモリやCPUなど)にアクセスしたりと、OSの核を担っている存在です。
シェルの話に戻すと、具体的にはユーザーの命令をカーネルにわかるように解釈して伝えています。 逆に言えばシェルを介さないと命令が届かないと言うことになります。
いままでシェルの役割を説明しましたが、どうやって操作できるのでしょうか。専用の画面が必要になってくるわけですが、それが次に説明するターミナルになります。
ターミナル
シェルを使用するためのアプリケーションになります。
文字ベースでシェルを使い、コマンドの入出力を確認できます。Terminal.app(macOS)、GNOME Terminal(Linux)、Microsoft Terminal(Windows)が有名です。
ターミナルは白黒の世界と思われがちです。私もそう思っていました。
しかし、最近はテーマを設定して見やすくしたり、補完機能やコマンドの共有機能など、扱いやすさを重視した動きが見られます。
ちなみに筆者が使用しているターミナルはWarpです。
Rust製のターミナルで、さまざまな機能が搭載されています。ご興味ある方はぜひ。
シェルを確認する方法
では実際にTerminal.app(macOS)を使用して、シェルを確認します。
/bin/zsh
はMacのデフォルトで備わっているシェルです。
参考サイト
Discussion