「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低い傾向があるらしいので区別できるように調べた
シェルについて調べてるといきなりノックアウトされた。
当ページ管理人のネット上・実社会での観測結果によると、「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低い傾向がある。
区別ついていましたか?
「いや、シェルスクリプトって長いからシェルって省略してただけだし…」
ではシェルって何ですか?
シェルとシェルスクリプトについて違いを教えてください。
「・・・」
というわけで調べてみた。
シェルとは
シェルはOSとユーザのやり取りを仲立ちするためのものである。
ユーザーが直接OSを操作して、システム全体におよぼすような致命的なエラーを発生させるといったことを回避するために、OSの外殻(貝殻・シェル)として存在する。
つまりOSをユーザから守るための殻だったってことだ。
シェルにはCLIベースのものとGUIベースのものがある。
前者の例としてはBourne Shell(sh)やBourne-Again shell (bash)などのUnixシェルが挙げられる。
後者の例としてはWindowsのファイル操作などを行うExplorerやUnix系OSで使用されているX Window Systemがそれである。
シェルスクリプトとは
シェルスクリプトとはシェルが解釈できるコマンドを羅列したファイルのことである。
たとえばhelloworld.shというファイルを作成し以下のような内容を記述する。
#!/bin/bash
echo "Hello World !"
exit 0
このhelloworld.shがシェルスクリプトである。
シェルスクリプト
シェルスクリプトは、オペレーティングシステムのシェルまたはコマンドラインインタプリタ向けに書かれたスクリプトである。シェルは単純なドメイン固有言語の一種と見なされることが多い[1]。シェルスクリプトで書かれる典型的処理としては、ファイル操作、プログラム実行、テキストの印刷などがある。
まとめ
OSとやりとりするためのものを総称としてシェルと呼ぶ。
コマンドラインでOSとやり取りするシェルのコマンドを並べて実行できるようにしたテキストファイルをシェルスクリプトと呼ぶ。
こんな感じでしょうか。
シェルとはコマンドを実行するマクロプロセッサーのことであるとかまでいくとよくわからないのでパスしました。
なお、シェルスクリプトのことを指して「シェル」と呼んではいけない。本人は略しているだけのつもりかもしれないが、端から見るとシェルとシェルスクリプトの区別が付いていないように見える。よくわかっていない人が
「ファイルが消えた原因はシェルのバグです」
と主張するとき、原因は sh や csh のバグではなく、ほとんどの場合その人が書いたシェルスクリプトのバグにすぎない。
なるほど、「お前、シェルのバグを見つけられるぐらいのスキルもってるなんてすごいな」くらいの嫌味を言ってやりたい気分になりますね。