Quero verificar se um determinado comando existe bash
e me importo 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 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 builtin
e outros comandos porque
digite -t toque
dá file
como 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 -t
retornará o tipo de 'comando', incluindo "construído":
if [ "$(type -t help)" = "builtin" ]; then
echo "Help is a builtin command."
fi
Corra help type
para mais informações.