我想知道在VMS上使用文件名和逻辑名(在此上下文中为~filename别名)的灵活性存在明显的限制。 您可以使用[dir] name或[.subdir]名称等名称,并且可以将它们与dskxy:[dir]名称甚至dskxy:[。subdir]名称等设备组合使用。 然后是逻辑名称,例如SYS $ LOGIN,你可以形成像SYS $ LOGIN:name这样的文件名。 自然使用的是SYS $ LOGIN:[。subdir]名称,但似乎不接受。 我是否忽略了某些东西,还是一样不灵活?
答案 0 :(得分:2)
确实,SYS $ LOGIN:[。X]无法解析会令人沮丧。 在比赛中太晚了,考虑将其解决为“做我的意思,不是我说的”。 OpenVMS政策是“做我说的,做得好”。
如果您认为该示例映射为无效语法,则有意义:
dev:[logindir][.x]
但这可行:
dev:[logindir.][x]
微妙但是放置“。”的所有重要区别。 有人可能会争辩说任何“] [应该默默地放弃吧?
dskxy:[。subdir]名称有效,因为当前的默认目录是在那里编织的。 它映射到dev:[default_dir.subdir] name
其中可能存在这个从未改变过的原因。 SYS $ LOGIN:[。X]是否应该包含解析中的当前默认目录? 你不期望,但现有的OpenVMS主导行为表明应该存在。
有时可以通过定义根目录来解决这个问题,例如:
$ define / trans =隐藏sys_login dev:[default_dir。]
现在你可以说$ dir sys_login:[subdir]
但是现在领先的时期一定不能存在,而且逻辑本身没有任何作用。 它需要sys_login:[000000]才能工作。
我不是真的在帮助你吗?
希望这有点帮助, 海因
答案 1 :(得分:2)
sys $ login不是“home”root的一个很好的等价物,因为它是一个逻辑目录,你需要“设置默认值”。
如果您需要引用“home”下的目录,您可能需要定义与sys $ login目录对应的root / device-logical。
$ define / job home $ r'f $ str(f $ trnlnm(“sys $ login”) - “。] [” - “]”+“。]”)/ trans = conceal
注意“。]”和“隐藏”,这些将它定义为有根设备。 值得记住的是,不能将双重隐藏逻辑,因为CLI只翻译一次(因此从翻译的sys $ login中减去“。] [”。 这在“工作级别”上定义它,即工作中的所有流程都会知道它。
在LOGIN.COM中进行此定义将允许您参考以下内容: home $ r:[mydir]相当于“/ home $ r / mydir”
希望它能让您的VMS体验更加令人满意。