bash – ¿Es 'cat' un shell integrado o un programa externo?

Pregunta:

Cuando uso el comando type para averiguar si cat es un shell integrado o un programa externo, obtengo el resultado a continuación:

-$ type cat
cat is hashed (/bin/cat)
-$

¿Significa esto que cat es un programa externo que es /bin/cat ?

Me confundí, porque cuando verifiqué el resultado a continuación en busca de echo pude ver que es un programa built-in pero también un programa /bin/echo

-$ type echo
echo is a shell builtin
-$ which echo
/bin/echo
-$ 

Entonces no pude usar la lógica de que /bin/cat necesariamente significa un programa externo, porque echo era /bin/echo pero aún estaba integrado.

Entonces, ¿cómo sé qué es un cat ? ¿Integrado o externo?

Respuesta:

type te dice lo que usaría el shell. Por ejemplo:

$ type echo
echo is a shell builtin
$ type /bin/echo
/bin/echo is /bin/echo

Eso significa que si, en el indicador de bash, escribe echo , obtendrá el archivo. Si especifica la ruta, como en /bin/echo , obtendrá el comando externo.

which , por el contrario, es un programa externo que no tiene un conocimiento especial de lo que hará el shell. En sistemas similares a Debian, which es un script de shell que busca el ejecutable en la RUTA. Por lo tanto, le dará el nombre del ejecutable externo incluso si el shell usa un archivo.

Si un comando sólo está disponible como un built-in, which retornará nada:

$ type help
help is a shell builtin
$ which help
$ 

Ahora, miremos al cat :

$ type cat
cat is hashed (/bin/cat)
$ which cat
/bin/cat

cat es un ejecutable externo, no un shell incorporado.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım