Les programmes sont des exécutables ordinaires écrits dans n'importe quel langage (principalement C).
Le shell prend une commande entrée qui est juste une chaîne. Il recherche ensuite certaines séquences de caractères qui ont une signification particulière pour le shell, telles que les variables d'environnement qui sont $
suivi d'un mot ou de redirections qui sont >
suivi d'un chemin. Une fois cette substitution effectuée, il a une chaîne qui est divisée en espaces pour générer un nom d'exécutable et des paramètres. Le shell recherchera alors l'exécutable dans la liste des répertoires de la variable d'environnement PATH. Le shell utilise ensuite des appels système pour créer un processus à partir de l'exécutable avec les paramètres.
Par exemple pour exécuter la commande ls $HOME
le shell reconnaîtrait d'abord que $HOME
est une variable d'environnement et remplacez-la par sa valeur dans ce cas /home/user
en laissant la commande ls /home/user
. Il divise ensuite la commande sur l'espace pour obtenir le nom de l'exécutable ls
et paramètre /home/user
. Le shell trouve le premier exécutable qui correspond à ls
généralement /bin/ls
. Il utilise ensuite les appels système spawn()/ posix_spawn() ou fork() et exec() pour créer le nouveau processus.
La plupart des utilitaires de base sous Linux sont écrits en C
.Ceci vous pouvez vérifier dans busybox source code
qui prend en charge la plupart des utilitaires de commande linux de base écrits en C
.Donc les commandes comme ls,cd ...etc sont en c
Comment le shell interprétera le lien ci-dessous
dans un système d'exploitation, il existe un programme spécial appelé shell. Le shell accepte les commandes lisibles par l'homme et les traduit en quelque chose que le noyau peut lire et traiter.
http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm
Ces programmes sont principalement écrits en langage de programmation C, tout comme le noyau Linux.