Compruebe si el comando existe en bash

Compruebe si el comando existe en bash

Quiero comprobar si existe un comando determinado bashy solo me importan los comandos nativos de bash y no los scripts escritos por el usuario. Cuando me refiero native commandsme refiero a todos aquellos comandos que generalmente están disponibles para un usuario.

Hay dos comandos

command -v
type

que se puede utilizar para comprobar si el comando existe. Pero también devuelve un valor verdadero para los scripts escritos por el usuario, mientras que quiero limitarme solo a los comandos incorporados.

Nota:No estoy simplemente tratando de distinguir entre un bash builtincomando y otros porque

escriba -t toque

da filecomo tipo, pero este es un comando disponible para el usuario de forma predeterminada. Pero si el usuario escribe un script y luego intenta ejecutarlo, me gustaría filtrarlo.

Se agradece cualquier ayuda.

Respuesta1

No estoy seguro de devolver verdadero solo para un shell integrado, pero type -tdevolverá el tipo de 'comando', incluido "integrado":

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

Corre help typepara más información.

información relacionada