Verifique se o comando existe em bash [duplicate]

1

Eu quero verificar se existe um determinado comando em bash e me preocupo apenas com os comandos nativos do bash e não com os scripts escritos pelo usuário. Quando me refiro a native commands , quero dizer todos os comandos que estão geralmente disponíveis para um usuário.

Existem dois comandos

command -v
type

que pode ser usado para verificar se o comando existe. Mas também retorna um verdadeiro para scripts escritos pelo usuário, enquanto eu quero me restringir apenas aos comandos internos.

Observação: não estou apenas tentando distinguir entre um bash builtin e outros comandos porque

digite -t touch

file como o tipo, mas este é um comando disponível para o usuário por padrão. Mas se o usuário escrever um script e tentar executá-lo, então eu gostaria de filtrar isso.

Qualquer ajuda é apreciada.

    
por Sachin 09.07.2012 / 21:12

1 resposta

10

Não tenho certeza sobre retornar true apenas para um shell embutido, mas type -t retornará o tipo de 'comando', incluindo "builtin":

if [ "$(type -t help)" = "builtin" ]; then
    echo "Help is a builtin command."
fi

Execute help type para mais informações.

    
por 09.07.2012 / 22:02