Если у меня есть команда dosomething в OpenVMS, где я могу увидеть, откуда она берется (Расположение скрипта /exe - как это определяется, если это другой вид животного)
3 ответа
$ ШОУ ПРОЦЕСС / ВСЕ
$ SHOW ENTRY
$ SHOW ENTRY/FULL
Существует три "источника" DCL, как вы говорите, "исходящих" от чего-то вроде команды.
Одно предупреждение: синтаксис с видимым явным применением DCL, например:
$'dosomething'
здесь не учитываются, только "видимые как команды".
Кроме того, явные команды RUN или MCR сами являются командами, а затем run dosomething не представляет интереса.
Как проверить
- Символы - Функция: как псевдоним un * x или как "запустить программу с параметрами", почти как MCR dosomething. - Сделать: - $ show symbol dosomething- Символы являются "первым использованием" (если используется, то имеет приоритет над следующими шагами) 
- Истинная команда DCL - Нет встроенной утилиты для проверки таблицы команд. - Однако вы можете установить бесплатную утилиту VERB. - Затем сделайте: - $ verb dosomething- "Image" и "cliroutine" (в выводе VERB) показывают.EXE или внутренняя подпрограмма DCL, где выполняется команда. 
- Использование пути - Сделать: - $ directory DCL$PATCH:dosomething- Если .COM или.EXE-файл существует, командная процедура выполняется почти так же, как после - @DCL$PATH:dosomethingили образ кода запускается как- mcr DCL$PATH:dosomething.- Использование пути является "последним шансом" (только если символ не существует или не используется, и истинная команда DCL также не существует) - "Почти" во всем приведенном выше описании, потому что есть небольшая разница в интерпретации синтаксиса, в основном несущественная. 
Некоторое дополнительное объяснение
- Если существует символ с именем, соответствующим вашей "команде", содержимое символа может быть переведено двумя способами: - если содержимое начинается с «$», использование называется "чужая команда" и запускает изображение (.EXE-файл) остальной части содержимого, вплоть до разделителя (параметр может применяться почти как в псевдониме); предупреждение: каталог по умолчанию указан.EXE - это SYS $ SYSTEM:, а не процесс по умолчанию! 
- во всех других случаях значение может функционировать как псевдоним un * x. 
 - Значение символа "встроено" в командную строку, а замененный текст интерпретируется как ("новая") команда. - Слово "может" применяется в отношении настройки SET SYMBOL (см. "HELP SET SYMBOL" для описания VERB). - Имейте в виду, что псевдоним дополнительно объясняет другой действительный синтаксис dcl (истинная команда, явный «@» для процедуры или "невидимое" использование DCL $ PATH), но не для следующего символа (псевдоним или чужая команда). - Настоятельно не рекомендуется заменять любую настоящую команду DCL псевдонимами, НЕ делайте этого! 
- Истинные команды задаются командой SET COMMAND (очевидной), исполняемой (.Имена образа EXE или внутренней процедуры DCL) никак не связаны с именем команды, даже если большинство команд имеют адекватные имена (команда DIRECTORY запускает SYS $ SYSTEM: DIRECTORY.EXE и т.д., Но APPEND запускает COPY.EXE и HELP запускается VMSHELP.EXE и т.д.) 
- Путь используется как в un * x, но: - Только после проверки таблицы истинных команд (конечно, также после использования символа псевдонима, но это "un * x like")
- Образы, предназначенные для истинного использования команды, в большинстве случаев не могут быть использованы таким образом (существует где-то, работает с другим синтаксисом, пример: INSTALL)
 
Не думайте, что в OpenVMS это работает именно так, и на самом деле нет надежного способа. Для DCL-шоу большинство квалификаторов заканчивалось бы в SYS $ SYSTEM:SHOW.EXE, но без файла MAP не было бы способа выяснить, какой исходный модуль фактически вошел в этот исполняемый файл. DCL не похож на Bash, где он запускает-исполняет другой процесс и загружает образ этой команды.
