I programmi sono normali eseguibili scritti in qualsiasi linguaggio (principalmente C).
La shell accetta un comando immesso che è solo una stringa. Quindi cerca alcune sequenze di caratteri che hanno un significato speciale per la shell come le variabili ambientali che sono $ seguito da una parola o reindirizzamenti che sono > seguito da un sentiero. Dopo che questa sostituzione è stata eseguita, ha una stringa che viene suddivisa in spazi per generare un nome di un eseguibile e parametri. La shell cercherà quindi l'eseguibile nell'elenco delle directory nella variabile ambientale PATH. La shell utilizza quindi le chiamate di sistema per creare un processo dall'eseguibile con i parametri.
Ad esempio per eseguire il comando ls $HOME la shell riconoscerà prima quel $HOME è una variabile ambientale e sostituiscila con il suo valore in questo caso /home/user lasciando il comando ls /home/user . Quindi suddivide il comando nello spazio per ottenere il nome dell'eseguibile ls e parametro /home/user . La shell trova il primo eseguibile che corrisponde a ls di solito /bin/ls . Quindi utilizza ether le chiamate di sistema spawn()/ posix_spawn() o fork() ed exec() per creare il nuovo processo.
La maggior parte delle utilità di base in Linux sono scritte in C .Questo puoi verificarlo in busybox source code che supporta la maggior parte delle utilità di comando linux di base che sono scritte in C .Quindi comandi come ls,cd ...etc sono in c
Come la shell interpreterà il check-in sotto il link
in un sistema operativo c'è un programma speciale chiamato shell. La shell accetta comandi leggibili dall'uomo e li traduce in qualcosa che il kernel può leggere ed elaborare.
http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm
Questi programmi sono principalmente scritti nel linguaggio di programmazione C così come il kernel Linux.