Um comando externo que recebe um comando como seu argumento tem restrição no argumento?

1
  1. Para um comando externo que recebe um comando como argumento, o argumento é um comando externo, não o comando interno de um shell?

    Eu faço esta pergunta, com base nos dois exemplos a seguir

    o comando externo time pode somente tempo um comando externo.

    o comando externo which só pode mostrar informações sobre um externo comando.

  2. Se um comando interno puder receber um comando como argumento, pode argumento ser um comando interno ou externo?

Se não, forneça contraexemplos além de explicações.

    
por Tim 16.03.2016 / 09:54

2 respostas

2

Os recursos internos do shell só podem ser acessados pelo shell, portanto, os comandos externos não podem executá-los. por exemplo. o comando time externo só pode executar outros comandos externos. Comandos externos não podem executar built-ins de shell, aliases de shell ou funções de shell.

Note que os shells são, por sua vez, comandos externos (por exemplo, /bin/sh , /bin/bash etc), portanto, os comandos externos podem executar o shell com -c , por ex. compare sh -c 'time echo foo' a sh -c '/usr/bin/time echo foo' ou execute um script de shell que use built-ins.

Se houver comandos externos com o mesmo nome de um shell embutido (por exemplo, time , echo , kill , ...), os comandos externos poderão executá-los, mas mesmo se eles executarem a mesma tarefa básica é provável que sejam ligeiramente diferentes (por exemplo, opções de linha de comando diferentes, formato de saída diferente, capacidades diferentes - kill embutido pode matar pelo número do trabalho do shell,% externo kill não pode).

Os recursos internos do shell (por exemplo, time ou command ) podem executar comandos internos ou externos, além de aliases e funções do shell.

    
por 16.03.2016 / 21:37
0

Um exemplo é o comando command , ele pode aceitar comandos internos e externos como argumento.

command
 comando [-pVv] comando [argumentos…]
Executa o comando com argumentos, ignorando qualquer função do shell denominada command. Apenas os comandos ou comandos internos do shell encontrados pela pesquisa no PATH são executados. Se houver uma função shell chamada ls, executar o comando ls dentro da função executará o comando externo ls em vez de chamar a função recursivamente. A opção -p significa usar um valor padrão para o PATH que garante encontrar todos os utilitários padrão. O status de retorno neste caso é 127 se o comando não puder ser encontrado ou se ocorrer um erro e o status de saída do comando ocorrer de outra forma.

Se a opção -V ou -v for fornecida, uma descrição do comando será impressa. A opção -v faz com que uma única palavra indique o comando ou o nome do arquivo usado para chamar o comando a ser exibido; a opção -V produz uma descrição mais detalhada. Nesse caso, o status de retorno é zero se o comando for encontrado e diferente de zero, se não.

Os comandos enable ou help tomam como parâmetro apenas comandos incorporados.

O comando time pode receber entradas e integrações do shell.

    
por 16.03.2016 / 10:00

Tags