comando de comando

Propósito

Executa um comando simples.

Sintaxe

command [-p] command_name [argument...]
command [-p] [-v|-V ] command_name

Descrição

O comando command faz com que o shell trate o comando e argumentos especificados como um comando simples, suprimindo a consulta da função shell.

Normalmente, quando um / (slash) não precede um comando (indicando um caminho específico), o shell localiza um comando pesquisando as seguintes categorias:

  1. built-ins de shell especial
  2. funções do shell
  3. built-ins de casca regular
  4. Variável de ambiente PATH

Por exemplo, se houver uma função com o mesmo nome de um regular construído-no, o sistema utiliza a função. O comando command permite que você ligue para um comando que tenha o mesmo nome de uma função e obtenha o comando simples.

Os comandos -v e -V escrevem na saída padrão qual nome de caminho será usado pelo shell e como o shell interpreta o tipo de comando (interno, função, alias e assim por diante). Como os sinalizadores -v e -V produzem saída em relação ao ambiente do shell atual, o comando command é fornecido como um comando interno regular do shell Korn ou do POSIX shell. O comando /usr/bin/command pode não produzir resultados corretos, pois é chamado em um subshell ou em um ambiente de execução de comando separado. No exemplo a seguir o shell é incapaz de identificar aliases, subroutines ou comandos shell especiais:

(PATH=foo command -v)
nohup command -v

Sinalizações

Item Descrição
-P Executa a pesquisa de comandos usando um valor padrão para a variável de ambiente PATH que é encontra todos os comandos padrão.
-v Escreve para saída padrão o nome do caminho usado pelo shell atual para chamar o comando especificado, de acordo com as seguintes convenções:
  • Comandos, comandos integrados regulares, comandos incluindo uma / (slash), e quaisquer funções fornecidas por implementação encontradas pela variável de ambiente PATH são escritas como nomes de caminho absoluto.
  • Funções de Shell, comandos embutidos especiais, comandos embutidos regulares não associados a uma pesquisa de variáveis de ambiente PATH e palavras reservadas shell são escritas como apenas seus nomes.
  • As aliases são identificadas como tal, e suas definições são incluídas na sequência.

Se o nome de comando especificado não puder ser encontrado, nenhuma saída será escrita e o status de saída retornará um valor > 0 .

-V Escreve para saída padrão o nome de comando que será interpretado pelo ambiente shell atual. Embora o formato desta saída seja não especificado, A saída indica em qual das seguintes categorias o comando cai:
  • Comandos, comandos de shell regulares e quaisquer subroutines fornecidas por implementação encontradas usando a variável de ambiente PATH são identificadas como tais e escritas como nomes de caminho absoluto.
  • Outras funções de shell são identificadas como funções.
  • As aliases são identificadas como tal, e suas definições são incluídas na sequência.
  • Comandos embutidos especiais são identificados como tal.
  • Os comandos embutidos regulares não associados à pesquisa de variáveis de ambiente PATH são identificados como tal.
  • As palavras reservadas da Shell são identificadas como tal.

Status de saída

Quando a sinalização -v ou -V é especificada, os seguintes valores de saída são retornados:

Item Descrição
0 Conclusão bem-sucedida.
>0 O comando especificado com o parâmetro command_name não pôde ser encontrado ou ocorreu um erro.

Quando a sinalização -v ou -V não for especificada, os seguintes valores de saída são retornados:

Item Descrição
126 O comando especificado pelo parâmetro command_name foi encontrado mas não pôde ser invocado.
127 Ocorreu um erro no comando command , ou o comando especificado pelo parâmetro command_name não pôde ser encontrado.

Caso contrário, o comando command retorna o status de saída associado ao comando especificado pelo parâmetro command_name .

Exemplos

  1. Para fazer uma versão do comando cd que imprime o novo diretório de trabalho sempre que você alterar diretórios, digite:
    cd () {
            command cd "$@" >/dev/null
            pwd
    }
  2. Para iniciar fora um script shell seguro, um no qual o script evita ser spoofado por seu pai, digite:
    IFS='
    '
    #       The preceding value should be <space><tab><newline>.
    #       Set IFS to its default value
     
    \unalias -a
    #       Unset all possible aliases.
    #       Note that unalias is escaped to prevent an alias
    #       being used for unalias.
     
    unset -f command
    #       Ensure command is not a user function.
     
    PATH="$(command -p getconf _CS_PATH):$PATH"
    #       Put on a reliable PATH prefix.
     
    # ...
    Nesse ponto, dado as permissões corretas nos diretórios chamados pela variável de ambiente PATH , o script tem a capacidade de garantir que qualquer comando que ele ligue é o desejado.

Arquivos

Item Descrição
/usr/bin/ksh Contém o comando integrado Korn shell comando .
/usr/bin/command Contém o comando command .