• Flight PATH

コンピューターを使うとき、名前を考えるのは人間の仕事である。プログラミングでも面倒なのは、変数名や関数名を問題が起こらないように命名することだ。最近の言語では、名前空間やローカル変数などが利用できるので、かなり楽になった。ソフトウェアが進歩すると、人間が考える必要のあることが減っていく。

ファイル名も人間が命名する必要がある。現在では、多くのオペレーティングシステムで、階層構造ファイルシステムが使われている。ディレクトリさえ異なれば、同じファイル名を使えるため、命名が簡単になった。8 bit CPU向けのCP/Mや最初のMS-DOSは階層構造ファイルシステムがなく同じ名前を使ってしまうと、ファイルが上書きされる事故がたびたびあった。

階層型ファイルシステムでファイルの命名は簡単になったが、ファイルを指定するに長いパスを書かねばならなくなった。GUIでは、パスを直接扱うことがほとんどないため、こうした問題には気付きにくい。ユーザーに見えるアイコンなどは、内部で実行ファイルのフルパスと結びついている。

階層構造ファイルシステムやカレントディレクトリ、検索パスなどは、1964年に開発が始まったMulticsに最初に搭載された。ただし、Multicsでは、その実現方法は、現在のオペレーティングシステムとは、かなり違う(たとえばファイルとは呼ばずセグメントと言い、メモリにマッピングしてアクセスしていた)。これを今風に翻訳して表現すると、階層構造ファイルシステムに対して、特定のディレクトリやコマンド起動時のディレクトリなどを検索してファイルを探すのが「検索パス」であり、特定のディレクトリを起点とすることで相対パスを使って短い表記を可能にしたのが「カレントディレクトリ」である。

Multicsの反省から作られたUnixも階層構造ファイルシステムやカレントディレクトリ、検索パスを取り込んだ。パスなしでコマンドが入力されたときシェルは実行ファイルを探す。カレントディレクトリで見つからなければ、コマンド名の前に“/bin/”を付けて探す。このパスはプログラム中で固定されており変更することはできなかった。のちに標準コマンドは/binに入りきらなくなり“/usr/bin”も検索対象になった。このディレクトリ名はいまでもLinuxに残る。

検索パスが書き換え可能になったのはUnix Version 4で使われたPWB Shell(Mashey shell)からである。PWB Shellは、アルファベット1文字のシェル変数を持っており、変数“p”に検索パスが記録されていた。このシェル変数には、“:”で区切ってパスを複数記述することができた(現在のbashのPATH環境変数と同じ形式)。デフォルトは“:/bin:/usr/bin”で先頭のコロンは何もないパス(ヌルパス名)でカレントディレクトリの意味である。現在のように検索パスをPATH環境変数として扱うようになったのは、Unix Version 7(1979年)でBourn Shellが環境変数を導入したときだ。

MS-DOSは、1983年のVer.2.0で階層構造ディレクトリを導入したとき、環境変数PATHとpathコマンドを導入している。これは、当時Microsoftが、AT&Tからライセンスを受けて開発していたUnix Version 7をベースにしたXenixを参考にした。公開されているMS-DOS Ver.2.0のソースコードには、Xenix由来であることを示すアセンブラ・ソースコードファイルがある。

PATHの設定は、setコマンドによる環境変数設定だけあれば十分なはずなのにわざわざコマンドが用意されている。おそらく、Unixになじみのないユーザー向けにオンラインヘルプで解説を表示させたかったのであろう。

Windowsだと、PATH環境変数の効果をあまり感じることはできないが、Win+Rキーによる「ファイル名を指定して実行」では、PATH環境変数に検索パスが指定されているプログラムは、実行ファイル名だけで起動が可能だ。もっとも、Windowsのプログラム実行では、C:\WindowsやC:\Windows\Systemが暗黙の検索パスになっているため、メモ帳などもパスの指定が不要である。サードパーティのプログラムで、プログラムフォルダなどにインストールしてあるものは、パスを指定しないと起動できない。このために、「ファイル名を指定して実行」のダイアログボックスには、ファイルをブラウズする「参照」ボタンが存在する必要がある。

今回のタイトルネタは、1970年の英国テレビドラマ“UFO”(邦題謎の円盤UFO)のエピソード“Flight Path”(邦題UFO月面破壊作戦)である。同ドラマには、英国での放送順や制作順、日本での放映順のほかに、制作者推奨の順番がある。英国版DVDなどで採用されていて、制作順とほぼ同じだが、ストーリー内の実時間経過に沿った順になっている。この順だと、大きなストーリーと小さなエピソードを組み合わせ全体がつながっていることが見える。日本の放送順もかなり違っていて、当時は家庭用ビデオもなく、そんなことには気がつかず、一話完結ものだと勘違いしていた。