La plupart des utilisateurs de Linux ignorent souvent le fonctionnement interne du système d'exploitation. Vous exécutez peut-être des commandes Linux sur le shell depuis longtemps, mais vous êtes-vous déjà demandé ce qui se passe dans les coulisses lorsque vous appuyez sur Entrer?
À la fin, vous aurez une brève compréhension de la façon dont le shell traite la commande tapée sous Linux.
Traitement de la commande
Lorsque vous entrez une commande, la première chose que fait le shell est de diviser la commande entière en « jetons ». Le shell cherchera alors un nom de programme appartenant au premier jeton de la ligne de commande.
S'il ne le trouve dans aucun des répertoires du chemin de recherche défini dans la variable d'environnement $PATH ou dans le répertoire local avec le .\ opérateur, ou ce n'est pas un alias shell ou fonction shell, le shell donnera une erreur. S'il trouve une commande valide, le shell passera alors en revue chacun des autres jetons et décidera s'il s'agit d'une variable, d'un paramètre de shell ou d'un argument de la commande.
Si le shell détermine qu'il s'agit d'une variable ou d'un paramètre comme le ~ opérateur pour le répertoire personnel, le shell les développera ou les remplacera par leurs valeurs d'origine dans la commande.
Lorsque le shell a développé des paramètres ou des variables, il transmet la chaîne de commande à la commande, en exécutant le programme avec ses arguments. Le shell ne détermine pas si des arguments sont valides. C'est le travail du commandement.
Exécuter la commande
Lorsque le shell lance une autre commande, comment revient-il à la même invite que vous utilisiez auparavant? Le shell fait une copie de lui-même, un processus appelé forking. Cette copie du shell se remplace par la commande, avec tous les arguments qui ont été traités précédemment. C'est ce qu'on appelle un « exec » et le processus combiné est appelé « fork-and-exec ».
Par exemple, lorsque vous exécutez la commande ls, le processus shell se fork en utilisant le fourchette() et créez une autre instance de shell. Sur les deux processus shell exécutés sur le système, le shell supplémentaire exécutera ls en utilisant le exec() fonction, se transformant en une instance de la commande ls.
Pendant ce temps, le shell d'origine attend la fin de la commande. C'est pourquoi vous pouvez utiliser le contrôle des tâches pour suspendre des tâches et exécuter des tâches en arrière-plan dans le shell.
En rapport: Qu'est-ce qu'un processus sous Linux ?
Signaler l'état de sortie
Les commandes Linux indiquent si elles ont été exécutées avec succès ou non via leur état de sortie. Comme son nom l'indique, les programmes signalent leur état de sortie lorsqu'ils ont fini de s'exécuter. Ils le font à travers le $? variable d'environnement, qui contient l'état de sortie de la dernière commande exécutée.
Par convention, un état de sortie de 0 indique une exécution réussie, tandis que tout autre que 0 signifie généralement une erreur. Votre shell peut également indiquer un état de sortie différent de zéro sur la ligne de commande en fonction de la configuration de votre invite.
La capture d'écran ci-dessus est un exemple montrant une invite Zsh personnalisée qui affiche un état de sortie d'erreur de 127 en raison d'une commande qui n'existe pas.
Vous savez maintenant comment fonctionnent les commandes Linux
Maintenant que vous savez comment le shell Linux traite une commande, fork et exécutez lui-même, et comment les programmes signalent leur état de sortie, vous pouvez utiliser la ligne de commande plus efficacement.
Plusieurs shells Linux sont disponibles gratuitement pour les utilisateurs. Bien que chacun d'eux effectue plus ou moins le même travail, ils sont différents à bien des égards. Vous pouvez essayer d'installer certains des shells sur votre système et décider vous-même lequel vous convient le mieux.
Vous cherchez une alternative au shell bash Linux? Voici un aperçu du meilleur shell Linux: tsch, fish, KornShell et Z Shell.
Lire la suite
- Linux
- Commandes Linux
- Shell Linux Bash
David est un écrivain indépendant basé dans le nord-ouest du Pacifique, mais originaire de la région de la baie. Il est passionné de technologie depuis son enfance. Les intérêts de David incluent la lecture, le visionnage d'émissions de télévision et de films de qualité, les jeux rétro et la collection de disques.
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !
Cliquez ici pour vous abonner