wiki:WriteAShell

シェルを書く?

最近何度か、「シェルを書く」なんて言葉を聞いて、「ええー?!」と思ってしまいました。

どうやら、シェルスクリプトを書くって意味らしいですね。 数人からそういう用法を聞いたので、どうやら最近の風潮なのかしらん。 「シェルスクリプトを書く」って言って欲しいです。驚くから。 僕はまた、 MonaOSみたいに、ユーザコマンド実行環境を開発するのかと思ったよ。

だってさ、「シェル」って、貝殻=殻であって、OSを包み込んでキレイに見せる=使いやすく見せる「外側」のことでしょ。 そういや、 共立出版とかから出てた古き良きUnixの入門書には、ハードウェア、カーネル、ユーザプロセス空間、シェル環境っていうふうに外側に向かう同心球の図が書いてあったっけ。 Unixは、ユーザの立場からはログインプロンプトとシェルプロンプトしか見えない世界であって、その内側でうごめく仕組みには、なかなか想像力が働かなかったことを覚えています。 いや、今だって、判ったような気になっているだけで、実は何も判っていないのかもしれない。

OSとシェルの関係は、現代だって何も違わないです。 現代のGUIなOS環境で、「シェル」とは、GUIデスクトップそのものです。 これは比喩で言っているわけではなくて、実際に「GUIシェル」って呼んだり、「ウィンドウズのシェルはエクスプローラ(≠IE)で…」なんて言ったりします。

さて、「シェル」とは、ユーザコマンドの実行環境、つまりコマンドを入力したら対応する動作をするという環境のことです。 OSに備える「ユーザインターフェース」だと思えば間違いないです。 Unixならば、「/bin/sh」や「/bin/csh」や「/bin/tcsh」や「/bin/bash」や「/bin/zsh」やらのこと。 「シェルスクリプト」とは、OSを限定しない汎用の概念ではないです。 特にUnixのシェルには、コマンドの動作手順をファイルに書いておくとその順番通りに動作してくれるという機能が備わっていて、その台本ファイルのことを「シェルスクリプト」と呼びます(スクリプト=台本)。

そういうわけで、年寄りの戯れ言業歴の長い者のわがままとしては、「シェルスクリプトを書く」と言って欲しいわけですよ。 驚くから。

ところで、シェルスクリプトを書くのはそんなに面倒ですか? 行番号のあるBASICから来た者としては、シェルスクリプトに出会ったときは「なんてすばらしい!」と思ったものです。 「fi」や「esac」が気持ち悪いくらいで、あとは何も困らないと思うんだけどなあ。 そうそう。「fi」が嫌いだからって、cshスクリプトなんて書かないように!

(2007/11/8 - sgk)