「黒い画面」とは何か、Terminal(ターミナル)、Shell(シェル)、代替ソフト、最後に
「本当は怖くない黒い画面入門」シリーズも最終回です。今回はそもそも「黒い画面」とは何なのかを紹介します。
「黒い画面」とは何か
「黒い画面」とは何か。そりゃあもちろん今まで使ってきたコレ。
ターミナル .app のことでしょう。
しかし、実は今まで「黒い画面」として使ってきた物は大きく二つのソフトから成り立っています。これは歴史的経緯を説明した方がわかりやすいと思います。
Terminal(ターミナル)
Part.01 で説明したように昔は大きな「ホストコンピューター」に多数の「端末」を接続して使っていました。
「端末」にはディスプレイとキーボードが付いています。「端末」のキーボードで文字を打つと、ホストコンピューターに送られ、結果が帰ってきて「端末」のディスプレイに表示されます。
昔のコンピューターは非常に高価だったため、1台の大型コンピューターが処理を行い、単なる入出力装置としての安価な「端末」を複数用意して使いました。
この「端末」、英語では Terminal(ターミナル)というハードウェアをソフトウェアで模倣(emulate)したものがターミナル .app です。この種類のソフトを正確にはターミナルエミュレーター(Terminal Emulator)と言います。
昔は「ホストコンピューター」と「端末」だったものが、今は端末はソフトウェアになり、ホストと端末が1台のパソコン上で完結しています。(端末で自分自身に接続している)
ターミナルは文字を入力することと結果を表示することしかできません。では今まで使ってきた$マークのアレは何だったのでしょう。
Shell(シェル)
$
マークを出しているのはshell(シェル)という種類のソフトです。shell は $
マークなどのプロンプトを表示してユーザーからの入力を待ち、入力されたファイル名のプログラムを実行し、終了したらまたプロンプトを表示して待ちます。
「黒い画面」の本質であると説明した、「ファイル名を入力するとそれを実行する」という機能はこの shell が行っています。
shell は殻という意味です。複雑なコンピューターを貝殻のようにつつみ、ユーザーとの仲介役をしてくれるためshellという名前なのだと思います。Finder も全く違う物に見えますが、コンピューターを包みこんでユーザーとの仲介役をしてくれるという意味では同じです。Finder のような GUI(グラフィカルユーザーインターフェース)を持つものは特にグラフィカルシェルと呼びます。
この shell も単なるプログラムに過ぎません。/bin/sh
というのがそれです。shell を略して sh とはやはり略し過ぎですね。
前回スクリプトを実行させる時に使ったshコマンドはこれです。普段は$の後に文字を打ち込んでいましたが、ファイルにまとめてshに渡せば同じ結果になるのは当たり前ですね。
代替ソフト
「黒い画面」は主に Terminal Emulator と shell の二つで成り立っていると説明しました。両方とも代替ソフトが存在します。
Terminal EmulatorはMacでは[iTerm][2]というソフトが有名です。初期のターミナル.appは貧弱だったのでiTermが良く使われていましたが、現在ではターミナル.appも十分な機能を持つため、殆どのユーザーはデフォルトのターミナル.appを使っていると思います。
shは実はMacのデフォルトのshellではありません。Macで実際に使われているのはshの強化版とも言うべきbashというshellです。(macOS Catalinaからはzshがデフォルトになりました)
bashの由来
元々shの正式名称はBourne Shellと言います。アメリカのAT&Tベル研究所のSteve Bourneさんが作ったshellなのでBourne Shellです。bashはBourne-Again Shellの略でBourne Shellの全ての機能をカバーしつついくつもの追加機能を付けたshellです。Bourne ShellのBourneとborn again(生まれ変わり)を引っ掛けた駄洒落です。
他にも /bin
ディレクトリにはスクリプトを書くのに強い csh
、csh
を機能強化したtcsh、最後の shell を目指して作られた zsh など様々な shell があります。chsh
(CHenge SHellの略)コマンドでデフォルトで使われる shell を変更することができます。
最後に
「本当は怖くない黒い画面入門」はこれで終わりです。どうでしょうか、「黒い画面」は怖くなくなったでしょうか?
このシリーズでお伝えしたかったのは、全体としては呪文か暗号のように見えるものでも、一つ一つの要素をとってみれば、「日本語に訳してみればそのまんま」だったり、「省略しすぎてるだけ」だったり、「それを作ったおっさんの名前」だったり、「昔の名残で」だったり、単純なことに過ぎないということです。
コンシューマー系Webサイトの大半を占める「黒い画面」すなわちUNIX系OSのエッセンスに触れることはWebのエンジニアリングを理解する上での一番の近道です。