2016-03-30 2 views
2

Мне нужна помощь с openVMS.Изменить приглашение в OpenVMS

подсказка по умолчанию под VMS является $

Я хочу обновить это, чтобы отразить текущий рабочий каталог, который я нахожусь в, как я могу в Unix/Linux, когда я изменить каталоги.

Я создал файл с именем login.com и поместить это в мой домашний каталог в системе OpenVMS и добавил следующий код:

$ SET PROMPT='f$environment("default")' 

который должен работать, отображая текущую директорию, однако она отражает только мое домашний каталог во время входа в систему. Он не динамически обновляется по мере изменения каталогов. Если я запустил указанную выше команду в терминале, она покажет текущий каталог.

Есть ли способ обновить login.com для динамического обновления запроса каждый раз, когда я меняю каталог?

+0

Вы не можете сделать динамическое приглашение, но вы можете изменить способ изменения каталогов. Используйте командную процедуру для установки каталога и обновления запроса. К сожалению, это не поможет, если существующие командные процедуры или приложения изменяют текущий каталог по умолчанию. Взгляните на 20 и 21 [здесь] (http://www.cts.wustl.edu/~allen/vms-sdt.html) на способы управления стеком каталогов по умолчанию. Вы можете добавить 'set prompt' к ним. Или [this] (https://www.mpp.mpg.de/~huber/vmssig/src/COM/DIRSTACK.COM) вариант темы. – HABO

+0

HABO было давно динамическое приглашение, с указанием времени (так что ваше приглашение было 10:03 в 10:03 и 17:12 в 17:12), я помню. Не уверен, что у него были отношения с dclcompete http://www.digiater.nl/openvms/freeware/v80/dclcomplete/dclcomplete.readme, поэтому вы можете определенно сделать приглашение динамическим – user2915097

+0

из ftp: //www.digiater. nl/openvms/decus/vmslt96b/net96b/files_ftp2_kcl_ac_uk.txt 'SSHOOK \t \t Пример подключения к системным службам, чтобы дать динамическое приглашение' – user2915097

ответ

0

Лучшее, что вы можете сделать, насколько я знаю, это создать командный файл, чтобы изменить каталог и установить приглашение.

Создайте файл с именем CD.COM со следующим:

$ set default 'p1' 
$ current = f$dir() 
$ d_start = f$locate ("[", current) + 1 
$ d_stop = f$length (current) - 2 
$ current_dir = f$extract(d_start, d_stop, current) 
$ new_prompt = "SERVER::" + current_dir + ">" 
$ 
$loop: 
$ if f$length(new_prompt) .ge. 30 
$  then 
$  d_start = f$locate (".", new_prompt) + 1 
$  new_prompt = "SERVER::" + f$extract (d_start, d_stop, new_prompt) 
$  goto loop 
$ endif 
$ set prompt='new_prompt 

Вы можете изменить условие в цикле в зависимости от того, как долго вы хотите приглашение быть

Тогда в файле LOGIN.COM создать логический чтобы указать на каталог с файлом CD.COM

$ DEFINE /GROUP CD "Disk:[Folder.Containing.COM.File]" 

Затем использовать его как это:

CD Disk:[Full.Path.To.Dir] 

или

CD [.subdir] 

Единственный раз, когда это не будет обновлять подсказки правильно, если вы используете команду CD внутри другого COM-файла. Однако он все равно правильно изменит каталог.

Смежные вопросы