El sistema UNIX se basa en comandos, es decir , las cosas suceden debido a los comandos que ingresa. Todos los comandos UNIX rara vez tienen más de cuatro caracteres.
Se agrupan en dos categorías:
- Comandos internos: Comandos que están integrados en el shell. Para todos los comandos incorporados del shell, la ejecución de los mismos es rápida en el sentido de que el shell no tiene que buscarlos en la ruta dada en la variable PATH, y tampoco es necesario generar ningún proceso para ejecutarlo.
Ejemplos: fuente, cd, fg, etc. - Comandos externos: comandos que no están integrados en el shell. Cuando se debe ejecutar un comando externo, el shell busca su ruta dada en la variable PATH, y también se debe generar un nuevo proceso y se ejecuta el comando. Suelen estar ubicados en /bin o /usr/bin. Por ejemplo, cuando ejecuta el comando «cat», que generalmente se encuentra en /usr/bin, se ejecuta el ejecutable /usr/bin/cat.
Ejemplos: ls, gato, etc.
Si conoce los comandos de UNIX, debe haber oído hablar del comando ls . Dado que ls es un programa o archivo que tiene una existencia independiente en el directorio /bin (o /usr/bin), se marca como un comando externo que en realidad significa que el comando ls no está integrado en el shell y estos son ejecutables presentes en un archivo separado. En palabras simples, cuando ingrese el comando ls, para ejecutarlo se encontrará en /bin. La mayoría de los comandos son de naturaleza externa, pero hay algunos que realmente no se encuentran en ninguna parte, y algunos que normalmente no se ejecutan incluso si están en uno de los directorios especificados por PATH. Por ejemplo, tome el comando echo :
$type echo echo is a shell builtin
echo no es un comando externo en el sentido de que, cuando escribes echo, el shell no buscará en su RUTA para localizarlo (incluso si está allí en /bin). Más bien, lo ejecutará desde su propio conjunto de comandos integrados que no se almacenan como archivos separados. Estos comandos incorporados, de los cuales echo es miembro, se conocen como comandos internos .
Es posible que haya notado que es el shell el que realmente hace todos estos trabajos. Este programa comienza a ejecutarse tan pronto como el usuario inicia sesión y muere cuando el usuario cierra la sesión. El shell es un comando externo con una diferencia, posee su propio conjunto de comandos internos. Por lo tanto, si un comando existe tanto como un comando interno del shell como externo (en /bin o /usr/bib), el shell otorgará la máxima prioridad a su propio comando interno del mismo nombre.
Este es exactamente el caso con echo , que también se encuentra en /bin, pero rara vez se ejecuta porque el shell se asegura de que el comando de eco interno tenga prioridad sobre el externo. Ahora, hable más sobre los comandos internos y externos.
Obtener la lista de Comandos Internos
Si está utilizando bash shell, puede obtener la lista de comandos integrados de shell con el comando de ayuda :
$help // this will list all the shell built-in commands //
¿Cómo saber si un comando es interno o externo?
Además de esto, también puede obtener información sobre un comando en particular, es decir , si es interno o externo con la ayuda del comando de tipo :
$type cat cat is /bin/cat //specifying that cat is external type// $type cd cd is a shell builtin //specifying that cd is internal type//
Interno vs Externo
La pregunta de cuándo usar qué comando entre el comando interno y el externo no sirve porque el usuario usa un comando de acuerdo con la necesidad del problema que quiere resolver. La única diferencia que existe entre los comandos internos y externos es que los comandos internos funcionan mucho más rápido que los externos ya que el shell tiene que buscar el camino cuando se trata del uso de comandos externos.
Hay algunos casos en los que puede evitar el uso de external usando internal en lugar de ellos, por ejemplo, si necesita agregar dos números, puede hacerlo de la siguiente manera:
//use of internal command let for addition// $let c=a+b
En lugar de usar :
//use of external command expr for addition// $c=`expr $a+$b`
En tal caso, el uso de let será una mejor opción, ya que es un comando integrado de shell, por lo que funcionará más rápido que expr, que es un comando externo.
Publicación traducida automáticamente
Artículo escrito por Dimpy Varshni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA