VMS でファイル名と論理名 (~ このコンテキストではファイル名エイリアス) を使用する際の柔軟性に対する明らかな制限について疑問に思います。[dir]name または [.subdir]name のような名前を持つことができ、それらを dskxy:[dir]name または dskxy:[.subdir]name のようなデバイスと組み合わせることができます。次に、SYS$LOGIN などの論理名があり、SYS$LOGIN:name のようなファイル名を作成できます。これの自然な使用法は SYS$LOGIN:[.subdir]name ですが、これは受け入れられないようです。私は何かを見落としましたか、それとも同じように柔軟性がありませんか?
2 に答える
sys $ loginは、「デフォルトを設定」する必要がある論理ディレクトリであるため、「ホーム」ルートに相当するものではありません。
「ホーム」の下のディレクトリを参照する必要がある場合は、sys$loginディレクトリに対応するroot/device-logicalを定義することをお勧めします。
$ define / job home $ r'f $ str(f $ trnlnm( "sys $ login")-"。] ["-"]" +"。]")/ trans = conceal
「。]」と「conceal」に注意してください。これらは、ルート化されたデバイスとして定義されます。CLIは論理を1回だけ変換するため、二重に隠された論理を使用できないことを覚えておいてください(したがって、変換されたsys $loginから"。]["を減算します)。これは「ジョブレベル」でそれを定義します。つまり、ジョブ内のすべてのプロセスがそれを認識します。
LOGIN.COMでこれを定義すると、次のようなものを参照できます。home $ r:[mydir]「/ home $ r/mydir」と同等
それがあなたのVMS体験をより満足のいくものにすることを願っています。
実際、SYS$LOGIN:[.X] が解析されないのはイライラすることがあります。これを「私が言うことではなく、私が意味することを行う」に向けて修正することを検討するには、ゲームの後半に遅すぎます。OpenVMS のポリシーは、「自分の言うことを正しく実行する」ことです。
例が無効な構文にマップされていると考えると、ちょっと意味があります。
dev:[logindir][.x]
しかし、これはうまくいくでしょう:
dev:[logindir.][x]
その「。」を配置する際の微妙だがすべての重要な違い。おそらく、「][」は黙って削除されるべきだと主張することができますね?
dskxy:[.subdir]name が機能するのは、現在のデフォルト ディレクトリがそこに織り込まれているためです。dev:[default_dir.subdir]name にマップされます
そして、これが変更されなかった理由はおそらくそこにあります。SYS$LOGIN:[.X] に現在のデフォルト ディレクトリを解析に含める必要がありますか? あなたはそうは思わないでしょうが、既存の OpenVMS の支配的な振る舞いは、そこにあるべきだと言っています。
たとえば、ルートディレクトリを定義することで、それを回避できる場合があります。
$ define/trans=conceal sys_login dev:[default_dir.]
$ dir sys_login:[subdir] と言うことができます
しかし、ここでは先頭のピリオドがあってはならず、論理自体は何もしません。機能するには sys_login:[000000] が必要です。
私はここであなたを本当に助けていませんか?
これが少し役立つことを願っています、ハイン