Previous: , Up: Files   [Contents][Index]


6.18.5 Search Paths

あなたが、 included や、 そのファミリーのために、 直接ファイル名を指定する場合(つまり、 /~ で始まるファイル名、 または 2 番目の位置に : が付くファイル名 (‘C:...’ など))、 そのファイルは、 あなたの期待どおりにインクルードされます。

ファイル名が ./ で始まる場合、 これは「現在の」ファイルがインクルードされたディレクトリを指します。 これにより、 (現在の作業ディレクトリや絶対位置に関係なく)ファイル自体の位置を基準にして他のファイルを含めることができます。 この機能は、 ファイルにライブラリの他のファイルが含まれる可能性がある、 複数のファイルで構成されるライブラリにとって不可欠です。 C言語の #include "..." に相当します。 現在の入力ソースがファイルでない場合、 . はインクルードされた最も内側のファイルのディレクトリを参照します。 インクルードされたファイルがない場合は、 現在の作業ディレクトリからインクルードされます。

(./ で始まらない)相対ファイル名の場合、 Gforth は検索パス(a search path)を使用します。 検索パスに書かれた各ディレクトリ内で、 指定のファイル名を検索し、 最初に見つかったファイル名をインクルードします。 Forth のソース・ファイルと一般ファイルには別個の検索パスがあります。 検索パスにディレクトリ . が含まれている場合、 ファイルが ./ で指定されているかのように、 「現在のファイルのディレクトリ」または作業ディレクトリを参照します。

~+ を使用して、 (bash の Tilde Expansion ~+/foo$PWD/foo のように)現在の作業ディレクトリを参照します(訳注: "~+/my-mkdir-parents.fs" file-status .s <2> 2 0 ok 2 )

absolute-file? ( addr u – flag  ) gforth-1.0 “absolute-file?”

ファイル名が / または ~ (チルダ展開) で始まる場合、 または ./* 拡張正規表現: ^[/~]|./ の形式である場合、 または 2 番目の文字としてコロンが含まれる場合(C:...)、 絶対(absolute)ファイル名です( true を返す)。 パスが / を含んでいるだけでは絶対ファイル名ではありません(訳注: 厳密にファイル名として成立するかどうかチェックしている訳では無い事に注意、 例えば "~ccc.txt" absolute-file? . -1 ok 、また ./ 形式を絶対と見なすことも注意。 "./aaa/bbb/ccc.txt" absolute-file? . -1 ok )