¿Cómo se define el comando bash "integrado"?

¿Cómo se define el comando bash "integrado"?

Noté que el comando like cd ..en realidad se convierte builtin cd ..y luego se ejecuta. ¿Pero cómo se builtindefine? which builtinno muestra nada y no está en /bin, /usr/binetc. ¿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. cdy sourceson ejemplos.

Otras funciones integradas están integradas simplemente por motivos de eficiencia. test(AKA [...]) y echoson ejemplos.

Para saber más, consulta la SHELL BUILTIN COMMANDSsección de man basho el onlinemanual de bash. Para obtener una lista de funciones integradas disponibles, ejecútela helpen 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 testproporcionará información sobre el testcomando integrado de bash mientras que, por el contrario, man testprobablemente proporcionará ayuda sobre el testcomando externo.

¿Qué comandos están disponibles como ejecutables e integrados?

Con la -aopción, typese 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 builtincomando:

$ builtin echo  1 2 3
1 2 3

información relacionada