LoginSignup
1
2

More than 3 years have passed since last update.

文系出身エンジニアが学ぶshellについて

Last updated at Posted at 2020-01-27

記事を書く背景

仕事をしているとshellという単語をよく聞くのですが、shellとターミナルの違いであったり、bash/zshの言葉の意味がよくわかっていなかったため自分がわかりやすいようにまとめてみました。

shellについて一言でまとめると?

ユーザー(私たち)がOSに命令するためのインターフェースの役割を担うソフトウェア。

さらに詳しく

図にすると下記のような構造になります。
ユーザーがコマンドプロンプトやiTerm2などのターミナルを通してコマンドを打つと、
直接カーネルに命令されるのではなく、shellを通してカーネルに命令がいきます。
そして、その命令の結果をshellが受け取りユーザーに返します。
つまり、カーネルとユーザの仲介役を担うのがshellです。

カーネルには、直接勝手に触られると困るプログラムがたくさんあります。
そのカーネルを直接操作できないよう保護(仲介)する役割を担っています。
※貝殻が中の生物を守るのと同じような意味合いから貝殻(シェル)という名前がついたそうです。

【用語の説明】
■カーネル
OSの中核部分に位置するソフトウェア。
ハードウェアとソフトウェアの仲立ちをしてくれるもの。
下記URLの説明がわかりやすいです。
https://qiita.com/uguis410/items/17ec1e447e9716bfdca7
スクリーンショット 2020-01-27 16.23.15.png

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2