そもそもシェルとは
エンジニアとしていると必ず一度は耳にするシェル。
言葉は聞いたことあるけれど、その内容までは詳しくはないという方も意外に多いのではないでしょうか。
ざっくりと説明すると、ターミナルなどでユーザーが入力したコマンドの結果を返すプログラムであると言えます。
CUIにおいてシェルはなくてはならない存在であり、シェルがいないといつまで立っても結果が帰って来ないといった状況になってしまいます。

CUIでのコマンド実行には3つの登場人物が必要です。
それが、ターミナル、シェル、カーネルです。
画像のようにシェルは通訳のような立場となり、ターミナル上で入力したコマンドをカーネルが理解できるように解釈して実行します。
そして、その処理結果を逆に私達が分かるように解釈し直して表示するという仕組みになっているんですね。
ちなにみLinuxにおいて一般的なシェルはbashと呼ばれるものです。
シェルスクリプトとは
シェルスクリプトとはシェルに解釈させるコマンドを記述したものであると言えます。
いちいちターミナルでコマンドを入力しなくても、シェルスクリプトにあらかじめ記述しておくことで、上から順に記述したコマンドをまとめて実行することができます。
便利ですね!
また、シェルスクリプトにも変数やif文など簡単な関数が用意されているので、引数に応じて実行するコマンドを変えるということもできます。
シェルスクリプトを使用する例でいうと、
あらかじめシェルスクリプトにデータベースやwebサーバーなどの起動コマンドを記述しておきます。
Dockerコンテナ内部でそのシェルスクリプトを実行すれば、1コマンドでアプリケーションの起動に必要な全てのコマンドが実行できるというところでしょうか。
シェルスクリプトはエンジニアをしていれば必ず使う機会はありますので、使用できる関数など少し調べてみると良いかもしれませんね!