%system#disk2006年06月12日 11時12分45秒

Stratus/VOS は複数の機械が集まって動くことを前提としている。

そのため、ディスクをマウントする時に、UNIX の様にルートディレクトリを一つだけ持つ様な、木構造のディレクトリ構成はできない。また各ディスクの命名も、system と module 毎のディスクを区別する必要がある。

そこで、DOS の様にボリューム毎にマウントすることになる。そして、どの system のディスクかを選別するために、system 名も含まれる。実を言うと、ディスクの命名は module とよく似ている。%system1#disk1 となる。%system1#module1 が module の命名だったのを思い出してほしい。

例では、わざわざ %system の様にしたが、system と綴ることは強制されているわけではない。#module や #disk も全てを綴る必要はない。しかし、 module もディスクも # から始まることを考えると、最初の必須なのは最初の一文字だけだと思う。つまり、 %s は system で %m は module であり、%d はディスクと名付ける必要があると思われる。 自分で命名したことはないので、ここら辺りの詳しい規則は知らない。 なお、 %s の部分は、 module 指定時と同じく、同一 system 上であれば省略可能である。

VOS でのパスは > で区切られる。それに加えて、< が一つ上のディレクトリを指す。また、. はカレントディレクトリを意味はしない。UNIX で / が使われるのとは大違いだ。

例をあげる。UNIX の /bin/cat だと、%system1#disk1>bin>cat のような表記になる。また、cd /usr/lib をして、ls ../bin/gzip をやろうとすると


chang_current_dir %system1#disk1>usr>lib
list <bin>gzip

が等価になる。< で、一つ上のディレクトリを参照しているのに注目してほしい。 また、現在のディレクトリは (current_dir) という評価式がある。つまり、list (current_dir)<bin>gzip も同じ結果になる。

実は、この違いは大きく、いろいろとオープンソースのプログラムを使おうとすると、中途半端に賢いプログラムはほとんど全て動かない。 ftp に限っても、wget や llftp から、 Windows の ftp ソフトでも、まともにディレクトリを変更できない。UNIX 系のソフトウェアは / がパスの区切りだと暗黙的に信じ込んでいるので、移動できないのである。wget のソースコードを見ると解るのだが、VMS ftp server のための処理が埋め込んである。 Solaris などに入っているデフォルトの ftp を使うと、使いづらいと普段は思う庶子は多いはずである。しかし、VOS につなげる場合は、古い動作の ftp は打ち込んだままサーバに送るという処理のおかげで、VOS ftp server でまともに使える唯一の ftp client になっているということもある。FreeBSD に入っている NetBSD 由来の ftp client は試したことはないが、いわゆる高機能 ftp は全滅だった。

オープンソースソフトウェアについてはまた後程取り上げる。