UNIX システムでは,先頭がスラッシュで始っていないパス名の解決に,現在の作業ディレクトリを使用します。
RMS でシンボリック・リンクに出会った場合は,そのシンボリック・リンクのあるディレクトリを現在の作業ディレクトリにして,パス名を解決します。
RMS に直接渡された POSIX パス名を解決する場合は,そのプロセスに現在割り当てられている OpenVMS のデフォルト・ディレクトリが,現在の作業ディレクトリになります。 OpenVMS のデフォルト・ディレクトリが複数個ある場合 (たとえば,ディレクトリの指定に検索リストが含まれている場合) は,検索リストを通して最初に見つかったディレクトリが,現在の作業ディレクトリになります。
ファイル・システムをマウント・ポイントにマウントしたり,マウント・ポイントからディスマウントしたりするためのユーティリティとして,
mntと
umntという新しいユーティリティが 2 つ使用できるようになりました。ただし,ファイル・システムをマウントまたはディスマウントできるのは, CMKRNL 特権を持つユーザだけです。これらのユーティリティは,GNV の一部として出荷されています。
これらのユーティリティには,マウント・ポイントの論理名テーブルが専用に用意されていて,管理されています。現在利用可能なマウント・ポイントを表示するように要求すると,これらのユーティリティはこのテーブルを使用してそれらを表示します。
これらのユーティリティのインタフェースは,次のとおりです。
mnt
既存のマウント・ポイントをリストにして表示します。
mnt
file_system mount_point
ファイル・システム
file_system を,マウント・ポイント mount_point にマウントします。
umnt
mount_point
マウント・ポイント
mount_point にマウントされているファイル・システムをアンマウントします。
umnt
file_system
ファイル・システム
file_system を,マウント・ポイントからアンマウントします。
umnt -A
ファイル・システムをすべて,マウント・ポイントからアンマウントします。
引数には,OpenVMS のファイル指定または POSIX パス名を指定できます。
V5.4 とそれより前の TCP/IP Services for OpenVMS でも, UNIX サーバと OpenVMS のセーブセットとの間でシンボリック・リンクのバックアップと復元を正しく行えるようにするために, NFS クライアントでシンボリック・リンクをサポートしていました。しかし,その機能は限られたものでした。そのサポートでは,クライアントがアプリケーション ACE を使用して,ファイルにそれがシンボリック・リンクであることを示すフラグを付けていました。 Version 5.5 になっても,ODS-2 のマウントについては,クライアントでこれと同じ動作が引き継がれています。しかし,ODS-5 のマウントについては,クライアントでアプリケーション ACE を検出したときにシンボリック・リンクが作成されるようになりました。このサポートによって,バージョンの古いクライアントで作成されたセーブセットでも,新しいバージョンで復元できるようになっています。
OpenVMS の DCL コマンドとユーティティは,シンボリック・リンクを検出すると,所定の動作を行うようになっています。つまり,シンボリック・リンクは,通常の処理として,そのリンク先までたどるようになっています。たとえば,シンボリック・リンク LINKFILE.TXT が TEXT.TXT を指している場合に "type LINKFILE.TXT" というコマンドを入力すると,そのリンクがたどられて,TEXT.TXT に含まれているテキストが表示されます。
また,シンボリック・リンクは,それ自身が直接指定されていなくても,たどられるようになっています。たとえば,"
dir [...]*.TXT" というコマンドを処理しているときに,ディレクトリを参照しているシンボリック・リンクが検出されると,その参照先ディレクトリ (およびそのサブディレクトリ) にある, "
.TXT" というタイプのファイルがすべて表示されます (注意: OpenVMS Version 8.3 でもディレクトリのワイルドカードを処理しますが,そのときにシンボリック・リンクの参照先がディレクトリであるかどうかは調べません)。
しかし,シンボリック・リンクを常にたどらない方がよい場合もあります。また,シンボリック・リンクをたどるかどうかをユーザが指定できる方がよい場合もあります。
以下のコマンドには,シンボリック・リンクを決してたどらないものと,シンボリック・リンクをたどるかどうかを指定できるものがあります。
BACKUP
バックアップ操作でシンボリック・リンクが検出されると,そのシンボリック・リンク自体がコピーされます。この動作は,すべてのバックアップ・タイプ (物理,イメージ,およびファイル) に適用されます。
COPY
/SYMLINK /NOSYMLINK (デフォルト)
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンクから参照されているファイルがコピーされます。
/SYMLINK 修飾子を指定すると,入力したシンボリック・リンクがすべてコピーされます。
CREATE
/SYMLINK="text"
シンボリック・リンクが作成されて,そこに,指定されたテキストが引用符なしで含められます。
作成されたシンボリック・リンクがその後でファイル名の処理中に検出されると,そのシンボリック・リンクの内容が読み取られ, POSIX パス名が指定されているものとして処理されます。
バージョンの古いシンボリック・リンクと共存させることはできません。
DELETE
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体が削除されます。
DIRECTORY
/SYMLINK (デフォルト) /NOSYMLINK
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体のファイル属性が表示されます。ファイルの属性を表示するように要求すると,シンボリック・リンクの内容も表示されます。その際,ファイル名と内容の間に矢印が置かれます (たとえば,LINK.TXT -> FILE.TXT)。
ファイル指定としてシンボリック・リンクを入力するとともに /NOSYMLINK 修飾子を指定すると,そのシンボリック・リンクから参照されているファイルのファイル属性が表示されます。ただし,表示される名前は,シンボリック・リンク自体の名前のままです。
DUMP
/SYMLINK /NOSYMLINK (デフォルト)
入力ファイルがシンボリック・リンクの場合,シンボリック・リンクから参照されているファイルがダンプされます。
/SYMLINK 修飾子を指定すると,入力したシンボリック・リンクがすべてダンプされます。
PURGE
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体がパージされます。存在できるシンボリック・リンクのバージョンは 1 つだけであるため,このコマンドを実行しても,そのファイルに対する影響はありません。
RENAME
変換元ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体の名前が変更されます。
変更先ファイルがシンボリック・リンクであれば,この操作は失敗します。
SET FILE
/SYMLINK /NOSYMLINK (デフォルト)
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンクから参照されているファイルが設定されます。
/SYMLINK 修飾子を指定すると,そのシンボリック・リンク自体が設定されます。
| 注意
- /EXCLUDE 修飾子を使用すれば,指定したシンボリック・リンクを対象から除外できます。除外されるシンボリック・リンクは,修飾子のファイル指定に一致したものです。シンボリック・リンクから参照されているファイルのファイル名は,その名前を指定しても除外されません。
例: シンボリック・リンク LINK.TXT が,別のディレクトリにある TEXT.TXT を参照しているとします。
/EXCLUDE=LINK.TXT と指定すると LINK.TXT が操作から除外されます (そのため,TEXT.TXT も除外されます)。
/EXCLUDE=TEXT.TXT と指定すると, LINK.TXT も TEXT.TXT も操作から除外されません。
- シンボリック・リンクを指定して F$FILE_ATTRIBUTES を実行すると,そのシンボリック・リンクから参照されているファイルが対象になります。これに対して,新しいレキシカル関数 F$SYMLINK_ATTRIBUTES の場合は,そのシンボリック・リンク自体の情報が返されます。また,新しいレキシカル関数 F$READLINK の場合は,入力ファイルがシンボリック・リンクであるとそのテキスト形式の内容が返され,入力ファイルがシンボリック・リンクでないと NULL が返されます。
- 一部のコンパイラやユーティリティでは,入力ファイル指定,または修飾子に対する引数として,引用符で囲んだパス名を指定できます。このようなコンパイラやユーティリティには, C コンパイラ,C++ コンパイラ,CXXLINK,Linker,および Librarian があります。 Linker については,オプション・ファイルにも引用符で囲んだパス名を含めることができます。コンパイラの /INCLUDE_DIRECTORY 修飾子については,引用符で囲んだパス名ではなく,以前と同じ標準の POSIX パス名を指定できます。 Java コンパイラについても,以前と同じ標準の POSIX パス名を指定できます。また,SET DEFAULT の入力には,引用符で囲んだパス名を指定できます。
|