Quiero comprobar si existe un comando determinado bash
y solo me importan los comandos nativos de bash y no los scripts escritos por el usuario. Cuando me refiero native commands
me 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 builtin
comando y otros porque
escriba -t toque
da file
como 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 -t
devolverá el tipo de 'comando', incluido "integrado":
if [ "$(type -t help)" = "builtin" ]; then
echo "Help is a builtin command."
fi
Corre help type
para más información.