#記事を書く背景
仕事をしているとshellという単語をよく聞くのですが、shellとターミナルの違いであったり、bash/zshの言葉の意味がよくわかっていなかったため自分がわかりやすいようにまとめてみました。
#shellについて一言でまとめると?
ユーザー(私たち)がOSに命令するためのインターフェースの役割を担うソフトウェア。
#さらに詳しく
図にすると下記のような構造になります。
ユーザーがコマンドプロンプトやiTerm2などのターミナルを通してコマンドを打つと、
直接カーネルに命令されるのではなく、shellを通してカーネルに命令がいきます。
そして、その命令の結果をshellが受け取りユーザーに返します。
つまり、カーネルとユーザの仲介役を担うのがshellです。
カーネルには、直接勝手に触られると困るプログラムがたくさんあります。
そのカーネルを直接操作できないよう保護(仲介)する役割を担っています。
※貝殻が中の生物を守るのと同じような意味合いから貝殻(シェル)という名前がついたそうです。
【用語の説明】
■カーネル
OSの中核部分に位置するソフトウェア。
ハードウェアとソフトウェアの仲立ちをしてくれるもの。
下記URLの説明がわかりやすいです。
https://qiita.com/uguis410/items/17ec1e447e9716bfdca7
#shellとターミナルの違い
そもそもshellとターミナルは別のソフトウェアです。
それぞれの役割としては下記です。
・ターミナル:ユーザーの命令文(コマンド)を受け付け、出力するソフトウェア
・shell:ターミナルで受け付けた命令文をカーネルに伝えたり、カーネルの処理結果を解釈するソフトウェア
#shellの種類
そんなshellもソフトウェアの一種なので、いくつか種類があります。
bashやzshはshellの種類のひとつなんです。
Shellの種類 | 概要 |
---|---|
sh | 古くからあるシェルで、多くのOSで利用できる。 |
bash | もっともスタンダードなシェル。Linux標準シェル。 |
tcsh | CシェルにTenexの機能を組み込んだのがTCシェル。 |
zsh | 万能系シェル。Macのデフォルトshell。 |
#参考文献
https://orizuru.io/blog/os/shell/
https://eng-entrance.com/linux-shellscript-what
https://qiita.com/uguis410/items/17ec1e447e9716bfdca7
https://academy.gmocloud.com/keywords/20170324/4010