Noté que el comando like cd ..
en realidad se convierte builtin cd ..
y luego se ejecuta. ¿Pero cómo se builtin
define? which builtin
no muestra nada y no está en /bin
, /usr/bin
etc. ¿Es solo parte del programa bash y se maneja de manera diferente?
Respuesta1
Las funciones integradas son solo parte de bash. Puedes saber si un comando está integrado usando type
. Por ejemplo:
$ type export cd source alias
export is a shell builtin
cd is a shell builtin
source is a shell builtin
alias is a shell builtin
Muchos comandos integrados lo están porque no pueden funcionar de otra manera. cd
y source
son ejemplos.
Otras funciones integradas están integradas simplemente por motivos de eficiencia. test
(AKA [...]
) y echo
son ejemplos.
Para saber más, consulta la SHELL BUILTIN COMMANDS
sección de man bash
o el onlinemanual de bash. Para obtener una lista de funciones integradas disponibles, ejecútela help
en el símbolo del sistema. Para obtener información sobre una función incorporada en particular, por ejemplo test
, ejecute help test
. Tenga en cuenta que help test
proporcionará información sobre el test
comando integrado de bash mientras que, por el contrario, man test
probablemente proporcionará ayuda sobre el test
comando externo.
¿Qué comandos están disponibles como ejecutables e integrados?
Con la -a
opción, type
se mostrarán todos los lugares que contienen el comando nombrado. Por ejemplo:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
Cómo utilizar un ejecutable cuando hay uno incorporado disponible
Si, por alguna extraña razón, desea utilizar un ejecutable en particular y no el shell integrado, todo lo que tiene que hacer es especificar la ruta:
$ /bin/echo "This is not the builtin"
This is not the builtin
Dado que las funciones integradas suelen tener más funciones, esto normalmente sólo es útil para pruebas de compatibilidad.
Cómo ejecutar el shell incorporado cuando está oculto por una función o alias
Si se le da la opción, el shell normalmente elegirá ejecutar el comando incorporado. La excepción es si el usuario ha definido un alias o función con el mismo nombre. Si desea estar seguro de que está ejecutando el comando incorporado, use el builtin
comando:
$ builtin echo 1 2 3
1 2 3