Los programas son ejecutables ordinarios escritos en cualquier lenguaje (principalmente C).
El shell toma un comando ingresado que es solo una cadena. Luego busca ciertas secuencias de caracteres que tienen un significado especial para el shell, como las variables ambientales que son $
seguido de una palabra o redirecciones que son >
seguido de un camino. Después de que se haya realizado esta sustitución, tiene una cadena que se divide en espacios para generar un nombre de un ejecutable y parámetros. El shell luego buscará el ejecutable en la lista de directorios en la variable ambiental PATH. Luego, el shell usa llamadas al sistema para crear un proceso a partir del ejecutable con los parámetros.
Por ejemplo para ejecutar el comando ls $HOME
el shell primero reconocería que $HOME
es una variable ambiental y la sustituimos por su valor en este caso /home/user
dejando el comando ls /home/user
. Luego divide el comando en el espacio para obtener el nombre del ejecutable ls
y parámetro /home/user
. El shell encuentra el primer ejecutable que coincide con ls
normalmente /bin/ls
. A continuación, utiliza las llamadas al sistema spawn()/ posix_spawn() o fork() y exec() para crear el nuevo proceso.
La mayoría de las utilidades básicas de Linux están escritas en C
.Esto lo puedes verificar en busybox source code
que admite la mayoría de las utilidades de comando básicas de Linux que están escritas en C
.Entonces, comandos como ls, cd ... etc. están en c
Cómo interpretará Shell el enlace a continuación
en un sistema operativo hay un programa especial llamado shell. El shell acepta comandos legibles por humanos y los traduce a algo que el kernel puede leer y procesar.
http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm
Estos programas están escritos principalmente en el lenguaje de programación C, al igual que el kernel de Linux.