Изменить каталог в REXX exec, работающем в z/OS USS?

Я нахожусь в оболочке USS под TSO, и у меня есть этот исполняемый файл (с именем tryit):

/* rexx */
"cd /differentdir"
"pwd"

Вот результат:

> pwd
/origdir
> tryit
/origdir

Другими словами, эффекты команды cd действуют только на время действия самой команды. Есть ли способ для REXX exec изменить рабочий каталог таким образом, чтобы он был распознан в следующих командах?


person Oh Come On    schedule 04.04.2017    source источник
comment
Посмотрите на среду системных вызовов REXX. То, что вы делаете, носит временный характер, поскольку по умолчанию каждая из этих команд представляет собой отдельный оператор ADDRESS с аргументом командной строки.   -  person zarchasmpgmr    schedule 05.04.2017
comment
@zarchasmpgmr Это было именно то, что мне было нужно. Спасибо.   -  person Oh Come On    schedule 05.04.2017


Ответы (1)


Для исполняемых файлов REXX, работающих в оболочке USS, среда адресации по умолчанию — SH. Из Руководство по использованию системных служб REXX и z/OS UNIX:

Обратите внимание, что встроенные команды оболочки выполняются в процессе оболочки, а не в процессе REXX, и не могут изменять среду REXX. Например, адрес sh 'cd /' не изменит текущий каталог вашего процесса REXX.

Чтобы внести постоянные изменения в текущий рабочий каталог, введите команду address syscall chdir. Из того же руководства:

Если вы используете chdir для изменения каталога в программе REXX, работающей в сеансе TSO/E, каталог обычно сбрасывается на ваш домашний каталог, когда программа REXX завершается.

person Oh Come On    schedule 05.04.2017