検索パス

検索パスの生成

サブシステムがファイルを読み込むとき、ファイルの完全なパス名を指定しなくても、既定の場所からファイルを読み込むことができる。これを検索パス (search path) という。

ファイルを読み込むとき、ベースプレフィックス (base prefix)、プロダクトプレフィックス (product prefix)、インフィックス (infix)、サフィックス (suffix) をこの順に結合して、実際のパス名を得る。ベースプレフィックスまたはプロダクトプレフィックスが空文字列でなければ、区切り記号としてスラッシュを補う。同様に、サフィックスが空文字列でなければ、区切り文字としてピリオドを補う。

Filesystem Hierarchy Standard に従うプラットフォームでは、既定のベースプレフィックスは以下である。ただし $HOME はホームディレクトリである。

  1. /usr/share/pastelstitch
  2. /usr/local/share/pastelstitch
  3. $HOME/.pastelstitch

このリストは数字が大きいものほど優先順位が高い。これは以下のリストも同様である。

既定のプロダクトプレフィックスは以下である。

  1. (空文字列)
  2. _generic
  3. (実装ごとに異なるプロダクトプレフィックス)

実装ごとに異なるプロダクトプレフィックスとして、例えば、リファレンス実装のバージョン 4 は ref4 を用いる。ref で始まるプロダクトプレフィックスはリファレンス実装のために予約されている。

インフィックスは 1 個のファイルを表すために指定された文字列である。例えば、標準ライブラリーであれば standard を使用する。

既定のサフィックスはサブシステムごとに異なる。例えば、構文結合器の既定のサフィックスは以下である。

  1. lib.xml
  2. xml
  3. (空文字列)

コマンドライン引数

サブシステムがコマンドラインアプリケーションとして実装されているとき、以下のコマンドライン引数を使用できる。

通常のコマンドライン引数は、まずファイルのパス名として解釈される。そのパス名を持つファイルが存在しなければ、このコマンドライン引数をインフィックスとして、検索パスを生成してファイルを開く。

--base-prefix コマンドライン引数は、この直後のコマンドライン引数をベースプレフィックスに追加する。

--product-prefix コマンドライン引数は、この直後のコマンドライン引数をプロダクトプレフィックスに追加する。

--suffix コマンドライン引数は、この直後のコマンドライン引数をサフィックスに追加する。

ただし、すべてのサブシステムが検索パスを用いるとは限らない。検索パスを使用しないサブシステムは、通常のコマンドライン引数をファイルのパス名として解釈し、そのファイルが存在しなければエラーとなる。この文書で規定されているサブシステムのうち、検索パスを用いるのは構文結合器のみである。