Un comando externo es un archivo localizado en el árbol del sistema de archivos. Por ejemplo, cuando un usuario ejecuta el comando ls
, el Shell pide al núcleo cargar en memoria el archivo /usr/bin/ls
.
Consideramos comandos externos los archivos que tengan uno de los formatos siguientes:
- Archivos con formato binario ejecutable.
- Archivos con formato de texto que representan un script de comandos (que puede estar escrito en Shell o en otro lenguaje).
Ejemplos:
El comando ps
es un archivo con formato ejecutable. Según el comando file el resultado ps
es:
Los script son un archivo de órdenes, archivo de procesamiento por lotes o guion es un programa usualmente simple, que por lo regular se almacena en un archivo de texto plano.
El comando file miscript
nos dará como resultado:
El archivo miscript.pl
es un script en perl.
El argumento del comando file es un nombre de archivo expresado con ruta relativa o absoluta.
Los comandos externos se ejecutan por un Shell hijo que actúa de intermediario:
1ª etapa: Duplicación del shell
2ª etapa: El código del shell hijo se substituye por el código del comando ls
.
Comandos internos
Un comando interno se integra en los procesos Shell (el Shell ejecuta la acción). Por lo tanto, no se corresponde en ningún caso a un archivo almacenado en disco.
El comando interno se ejecuta por el Shell actual.
1ª etapa: Ejecución del comando cd
. El shell reconoce uno de los comandos internos.
2ª etapa: El shell modifica el valor de su directorio actual.
Implementación interna y externa
Ciertos comandos tienen una implementación interna y otra externa. En este caso:
- El comando interno se ejecuta con mayor prioridad.
- La ejecución de un comando interno es más rápida que la ejecución de un comando externo.
- El comando
type
indica que el comando es interno, pero no precisa que existe igualmente una implementación externa.
El comando pwd
es un comando interno al Shell:
El comando pwd
posee también una implementación externa:
El comando interno es el que se ejecuta con mayor prioridad:
Podemos forzar la ejecución del comando externo indicando explícitamente la ruta del comando (ruta absoluta o relativa).
Debe estar conectado para enviar un comentario.