Los comandos integrados siempre se prefieren a los comandos externos. La razón es que el comando incorporado es más rápido (y en algunos casos, como cd
o , solo el comando incorporado puede tener el efecto deseado).test -o BASH_OPTION
A veces, el comando externo puede tener capacidades que el shell incorporado no tiene. En ese caso, puede llamar al comando externo dando una ruta explícita (es decir, que contenga una barra inclinada) (esto evita cualquier preocupación sobre el orden $PATH
). Si no desea codificar la ruta externa pero desea evitar el uso de la función incorporada, puede usar "$(type -P test)"
(nota mayúscula P
) en bash, "$(whence -p test)"
en ksh y =test
en zsh. Otra forma de forzar el uso de un comando externo es usar el command
builtin ( command -p test …
) o pasar por la env
utilidad ( env test …
).
En zsh, puede deshabilitar un incorporado con disable test
. Esto es permanente (para el shell o subshell actual) hasta que el builtin se vuelva a habilitar enable test
. En bash, puede hacer lo mismo con enable -n test
deshabilitar y enable test
volver a habilitar.
Puede usar un alias o función para forzar la ejecución de un comando diferente, por ejemplo alias test=/usr/bin/test
o test () { /usr/bin/test "$@"; }
. Si tiene ese alias, puede evitar su uso citando cualquier parte del mismo, por ejemplo \test
, realizará la función normal / incorporado / búsqueda externa. Tenga en cuenta que dependiendo del shell y su configuración, las definiciones de alias en una función pueden expandirse cuando se lee una función o cuando se ejecuta. Si ha definido una función, puede usarla command test
para evitar la búsqueda de funciones, así como la búsqueda de alias (por lo que aquí test
se invocará el valor incorporado a menos que esté deshabilitado).
/usr/bin/test -f "$file"
...