No OpenVMS, como posso ver de onde um comando está vindo - como “which” no NIX

4

Se eu tenho um comando dosomething no OpenVMS, onde posso ver de onde vem (Local do script / exe - como é definido se é um tipo diferente de animal)

    
por user1987442 14.02.2013 / 10:39

3 respostas

2

$ SHOW PROCESS / ALL

ENTRADA $ SHOW

$ SHOW ENTRY / FULL

    
por 14.02.2013 / 11:08
1

Existem três "fontes" DCL, como você diz, "vindo de" algo como o comando.

Um aviso: sintaxe com a aplicação explícita visível do DCL, como:

$'dosomething'

não são contados aqui, apenas os "visíveis como comandos".

Comandos RUN ou MCR explícitos também são comandos, então run dosomething são de interesse.

Como verificar

  1. Símbolos

    Função: como un * x alias ou como "executar um programa com parâmetros", quase como o MCR dosomething.

    Faça um:

    $ show symbol dosomething
    

    Os símbolos são "primeiro uso" (se usado, então tem prioridade sobre os próximos passos)

  2. Comando True DCL

    Não há compilação no utilitário para verificar a tabela de comandos.

    No entanto, você pode configurar um utilitário VERB de freeware.

    Então faça um:

    $ verb dosomething
    

    A "imagem" e "cliroutine" (na saída VERB) mostra o .EXE ou a rotina DCL interna onde executa o comando.

  3. Uso do caminho

    Faça um:

    $ directory DCL$PATCH:dosomething
    

    Se existir um arquivo .COM ou .EXE, o procedimento de comando será executado da mesma forma que @DCL$PATH:dosomething ou a imagem do código é executada como mcr DCL$PATH:dosomething .

    O uso do caminho é de "última chance" (somente se o símbolo não existir ou não for usado e o verdadeiro comando DCL não existir também)

    "Quase" em todas as descrições acima, porque existem pequenas diferenças na interpretação da sintaxe, principalmente irrelevantes.

Alguma explicação adicional

  1. Se existir um símbolo com o nome correspondente ao seu "comando", o conteúdo do símbolo pode ser traduzido de duas formas:

    • se o conteúdo começar com "$", o uso é chamado de "comando externo" e executa a imagem (arquivo .EXE) do restante do conteúdo, até o separador (o parâmetro pode ser aplicado quase como no alias); aviso: o diretório padrão do .EXE especificado é SYS $ SYSTEM :, não o padrão do processo!

    • em todos os outros casos, o valor pode funcionar como un * x alias.

    O valor do símbolo é "inlined" para a linha de comando e o texto substituído é interpretado como ("new").

    A palavra "pode" aplica-se em relação à configuração SET SYMBOL (verificar HELP SET SYMBOL para a descrição do VERBO).

    Esteja ciente de que o alias explica ainda mais a sintaxe dcl real (comando true, explicito "@" para procedimento ou uso "invisível" do DCL $ PATH), mas não para o próximo símbolo (alias ou comando externo).

    Recomendamos que não substitua qualquer aliases por um verdadeiro comando DCL, NÃO FAÇA isso!

  2. O comando True é definido com o comando SET COMMAND (óbvio), os nomes do executável (imagem .EXE ou da rotina DCL interna) não estão relacionados ao nome do comando, mesmo que a maioria dos comandos tenha nomes adequados ( o comando DIRECTORY executa um SYS $ SYSTEM: DIRECTORY.EXE etc, mas o APPEND executa o COPY.EXE e o HELP executa o VMSHELP.EXE, etc.)

  3. O caminho é usado como em un * x, mas:

    • Somente após a verdadeira tabela de comandos é verificada (claro, também após o uso do símbolo de alias, mas isso é "un * x like")
    • As imagens destinadas ao uso de comandos verdadeiros na maioria dos casos podem não ser usadas dessa maneira (existe em algum lugar executado com sintaxe diferente, exemplo: INSTALL)
por 05.04.2016 / 23:34
0

Não pense que funciona exatamente assim no OpenVMS e não há nenhuma maneira infalível de afaik. Para o show do DCL, a maioria dos qualificadores acabaria em SYS $ SYSTEM: SHOW.EXE, mas sem o arquivo MAP não haveria como descobrir qual módulo de origem realmente entrava nesse executável. O DCL não é como o Bash, onde ele executará outro processo e carregará a imagem desse comando.

    
por 11.03.2013 / 14:50

Tags