1

我想知道在 VMS 上使用文件名和逻辑名称(在此上下文中为 ~ 文件名别名)的灵活性是否存在明显限制。您可以使用 [dir]name 或 [.subdir]name 之类的名称,并且可以将它们与 dskxy:[dir]name 甚至 dskxy:[.subdir]name 之类的设备结合使用。然后是逻辑名称,例如 SYS$LOGIN,您可以形成文件名,如 SYS$LOGIN:name。很自然地使用 SYS$LOGIN:[.subdir]name 但这似乎不被接受。我是否忽略了某些东西,或者它是否同样不灵活?

4

2 回答 2

2

sys$login 不是“home”根的一个很好的等价物,因为它是一个逻辑目录,您需要“设置默认值”。

如果您需要引用“home”下的目录,您可能需要定义一个对应于 sys$login 目录的根/设备逻辑。

$define/job home$r 'f$str(f$trnlnm("sys$login")- ".]["-"]" + ".]") /trans=conceal

注意“.]”和“隐藏”,它们会将其定义为有根设备。记住不能有双重隐藏的逻辑是很好的,因为 CLI 只翻译一次(因此从翻译的 sys$login 中减去“.][”)。这将它定义为“工作级别”,即您工作中的所有流程都会知道它。

在您的 LOGIN.COM 中进行此定义将让您参考以下内容: home$r:[mydir] 相当于“/home$r/mydir”

希望它能让您的 VMS 体验更加满意。

于 2012-05-25T06:06:31.197 回答
2

事实上,SYS$LOGIN:[.X] 不解析会令人沮丧。在游戏中考虑将其修复为“做我的意思,而不是我说的”为时已晚。OpenVMS 的政策是“按我说的做,把它做好”。

如果您认为该示例映射到无效语法,这有点道理:

dev:[logindir][.x]

但这会起作用:

dev:[logindir.][x]

放置那个“。”的微妙但重要的区别。也许有人会争辩说,任何“][”都应该被默默地删除,对吧?

dskxy:[.subdir]name 之所以有效,是因为当前的默认目录是在其中编织的。它映射到 dev:[default_dir.subdir]name

这也许就是从未改变的原因。SYS$LOGIN:[.X] 是否应该在解析中包含当前默认目录?您期望不会,但现有的主要 OpenVMS 行为表明它应该存在。

您有时可以通过定义一个根目录来解决它,例如:

$ 定义/trans=隐藏 sys_login dev:[default_dir.]

现在你可以说 $ dir sys_login:[subdir]

但是现在领先时期一定不存在,而逻辑本身无济于事。它需要 sys_login:[000000] 才能工作。

我不是真的在帮你吗?

希望这会有所帮助,海因

于 2012-03-16T23:39:41.347 回答