Verifique se o comando existe no bash

Verifique se o comando existe no bash

Quero verificar se um determinado comando existe bashe me importo apenas com os comandos nativos do bash e não com os scripts escritos pelo usuário. Quando me refiro a, native commandsquero dizer todos os comandos que geralmente estão 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 valor verdadeiro para scripts escritos pelo usuário, enquanto eu quero me restringir apenas aos comandos embutidos.

Observação:Não estou apenas tentando distinguir entre um bash builtine outros comandos porque

digite -t ​​toque

filecomo 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, eu gostaria de filtrar isso.

Qualquer ajuda é apreciada.

Responder1

Não tenho certeza sobre como retornar true apenas para um shell integrado, mas type -tretornará o tipo de 'comando', incluindo "construído":

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

Corra help typepara mais informações.

informação relacionada