「シェル(Sell)」とは何か

リラックス!Linux!

Raspberry Pi(ラズパイ)やUbuntuを使っていると、コマンドを自在に操れれば…と感じている方もいるのではないでしょうか?
Ubuntuで「端末からコマンドを実行する」ことを実現しているのが「シェル」です。シェルの正体は何かを説明します。

端末を起動しよう

本稿ではUbuntu 24.04(ベータ)を使って説明します。
Ubuntuを起動すると、下のような画面が表示されるでしょう。

ここで、[Ctrl]+[Alt]+[T](3つのキーを同時に押す)を入力してみてください。

上の画面が表示されたと思います。これが「端末(ターミナル)」です。
実はこの時点でシェルは起動され、プロンプトを出してあなたのキーボード入力を待っているのです。

ここで、以下の文字列をキーボードから入力して[Enter]キーを押してみてください。

ls

“ls”コマンドは、ファイルやディレクトリの情報を表示するためのコマンドです。上図のように、 ls をターミナルで実行すると、ファイルとフォルダの名前が表示されます。

次に、”sl”と入力して実行してみてください。

sl

上の例は、lsコマンドを誤って、slと入力したという想定です。Linuxでは通常、slというコマンドはインストールされておらず、存在しません。このように、ユーザが入力した文字列を調べて、存在するコマンドであれば実行します。存在しない場合は、上の例のように存在しないことをユーザに告げてくれます。このように、コマンドのチェックや実行を行ってくれるのがシェルです。

上の実行結果をよく見てみると、slのインストール方法が示されています。以下のコマンドを実行してみてください。slコマンドがインストールされるでしょう。

sudo apt install sl

途中、上のようにパスワードの入力が促されます。あなたがログインしているアカウントのパスワードを入力します。
インストールが完了してプロンプトが表示されたら、slを実行してみましょう。

上のような、アスキーアートで描かれたSLのアニメが表示されたでしょうか?
今度は、slコマンドがインストールされて存在するので、コマンドが正しく実行されました。

シェルの正体とは

シェル (Shell) は、コンピュータのオペレーティングシステム (OS) とコンピュータユーザーの橋渡しをするプログラムです。具体的には、シェルはOSの中核である「カーネル」とやり取りしています。ユーザーがコマンドを入力すると、シェルはそれをカーネルが理解できる形に変換し、カーネルに指令を送ります。そして、カーネルはその指令を実行して結果をシェルに返します。ユーザーはシェルを通じてカーネルを操作することができ、それが結果的にコンピュータシステム全体を操作することにつながるのです。
シェルは、OSの操作を自動化したり、定期的な作業を実行したりするためにも使われます。例えば、特定の曜日や時間にシェルが実行実行されるように指示すると、シェルで定義されたルーティン作業を忘れずに行えます。
また、ファイルから特定の条件を満たすデータを抽出することもできます。応用例としてはエラーログからシステムの障害を検知することなどが挙げられます。

シェルの種類

シェルは、さまざまな種類があります。代表的なものには以下の3つがあります。

: 。

  • sh (Bourne Shell)
    UNIX系のOSで最も古くから存在するシェルです。
  • bash (Bourne Again Shell)
    Linux系OSの標準シェルとして広く使われています。UbuntuやRaspberry Pi OSの標準シェルはbashです。
  • zsh
    高機能なシェルで、bashの良い面を取り入れています。macOSの標準OSはzshです。Kali Linuxなど、一部のLinuxでも採用されています。

さいごに

Windowsの「ターミナル」や「コマンドプロンプト」もシェルの一形態といえます。
今ではシェルがあるのが当たり前ですが、過去をさかのぼるとOSのカーネルが直接、プロンプトを表示していた時代があったようです。その場合、好みのシェルに変更するという選択肢自体がなかったことになります。