2012-03-16 1 views
1

Je m'interroge sur une limitation apparente à la flexibilité de l'utilisation de noms de fichiers et de noms logiques (~ alias de nom de fichier dans ce contexte) sur VMS. Vous pouvez avoir des noms comme [dir] name ou [.subdir] name et vous pouvez les combiner avec un périphérique tel que dskxy: [dir] name ou même dskxy: [. Subdir] name. Ensuite, il existe des noms logiques, par ex. SYS $ LOGIN et vous pouvez former des noms de fichiers comme SYS $ LOGIN: name. Une utilisation naturelle de ce serait SYS $ LOGIN: [. Subdir] nom, mais cela ne semble pas être accepté. Ai-je oublié quelque chose ou est-ce aussi inflexible?Les noms de fichiers VMS peuvent-ils combiner des noms logiques et des sous-répertoires?

Répondre

2

En effet, il peut frustrer que SYS $ LOGIN: [. X] n'analyse pas. Trop tard dans le jeu pour envisager de corriger cela en faisant 'ce que je veux dire, pas ce que je dis'. La politique OpenVMS est de «faire ce que je dis, et le faire bien».

Il fait un peu de sens si l'on considère que l'exemple des cartes à une syntaxe non valide:

dev:[logindir][.x] 

Mais cela fonctionnerait:

dev:[logindir.][x] 

Subtil mais toute différence importante dans le placement que « » On pourrait peut-être soutenir que tout "] [" devrait être abandonné silencieusement hein?

Le nom dskxy: [. Subdir] fonctionne parce que le répertoire par défaut actuel y est tissé. Il correspond à dev: [default_dir.subdir] nom

Et c'est peut-être la raison pour laquelle cela n'a jamais été changé. Est-ce que SYS $ LOGIN: [.X] doit inclure le répertoire par défaut actuel dans l'analyse ou non? Vous ne l'attendez pas, mais le comportement dominant existant d'OpenVMS dit qu'il devrait être là.

Vous pouvez travailler parfois sorte de contourner le problème en définissant un répertoire racine par exemple:

$ define/trans = masquent sys_login dev: [. Default_dir]

Maintenant, vous pouvez dire $ dir sys_login: [ subdir]

Mais maintenant la période principale ne doit pas être là, et la logique seule ne fait rien. Il faut sys_login: [000000] pour fonctionner.

Pas vraiment vous aider ici je suis?

Hope this helps un peu, Hein

+1

Oui, merci. Une petite discussion sur cette bizarrerie était assez relaxante ... – user1274247

2

sys $ login est pas un bon équivalent pour « maison » racine car il est plutôt un répertoire logique, auquel vous devez « par défaut ». Si vous devez référencer les répertoires sous "home", vous pouvez définir une racine/device-logical correspondant au répertoire sys $ login.

$ define/emploi maison $ r « f $ str (f $ trnlnm ("sys $ login") - "] [ "- "]""]" +)/trans = masquent

Note ".]" Et "cacher", ceux-ci le définiraient en tant que dispositif enraciné. Il est bon de se rappeler que l'on ne peut pas avoir de logique à double dissimulation, car CLI ne le traduit qu'une seule fois (en soustrayant ainsi ".] [" De la traduction de sys $ login). Ceci le définit au "niveau de travail", c'est-à-dire que tous les processus de votre travail le savent.

Ayant cette définition dans votre LOGIN.COM vous permettra référence à des choses comme: maison $ r: [monrep] équivalent à "/ home $ r/mydir"

Espérons que cela rendrait votre expérience VMS plus satisfaisante .

Questions connexes