Interface de shell Linux au noyau Linux

Interface de shell Linux au noyau Linux
Nous passerons par le shell Linux, un interprète de commande pour Linux. Shell fournit un environnement où peu de programmes exécutables C sont présents sur un chemin connu spécifique. Shell localise ces exécutables et fournit la sortie de ces commandes à la console. Nous discuterons de quelques exemples de commandes et des variables d'environnement de la coquille.

Description:

Shell fournit un environnement à l'utilisateur où l'utilisateur peut exécuter plusieurs programmes exécutables et la sortie de ces programmes est affichée sur l'écran. Fondamentalement, la philosophie de travail du shell est qu'elle attend en permanence que l'utilisateur saisisse la chaîne. Ensuite, cette chaîne est recherchée et appariée avec les programmes exécutables connus qui sont présents dans l'environnement Shell. Si le programme exécutable correspondant est trouvé, l'exécutable est lancé après avoir créé un processus d'enfant. Ce processus d'enfant nouvellement créé exécute le programme. La sortie du programme est remise au processus parent qui est shell. Shell imprime la sortie à la console si la sortie n'est pas redirigeée. Les emplacements où le shell recherche les programmes exécutables est présent dans la variable d'environnement, «chemin». La variable de chemin maintient le «:» séparé dans plusieurs chemins où Shell recherche les programmes exécutables.

Le diagramme de bloc pour la coque est indiqué dans ce qui suit:

À partir du schéma de bloc fourni, nous pouvons conclure que nous avons besoin d'un shell pour exécuter n'importe quel exécutable C en environnement Linux. Sans le shell, il n'est pas possible d'exécuter le programme C dynamiquement. Il existe certains programmes exécutables prédéfinis qui sont appelés commandes shell. Quelques exemples des commandes de shell sont LS, PS, etc.

Discutons des commandes de shell. Il existe deux types de commandes de shell:

a) Commandes intégrées

Ce sont les commandes qui font la partie de la coquille elle-même. Lors de l'exécution de ces commandes, Shell ne déborde pas. Ces commandes sont exécutées dans le cadre de Shell lui-même. Pour mettre à jour dans ces commandes, nous avons besoin d'une mise à jour dans le shell lui-même. Ces commandes sont liées avec la coquille.

Certains exemples des commandes intégrées sont CD, écho, tuer, casser, alias, bg, etc. Nous pouvons utiliser la commande «Help» pour voir toute la liste des commandes intégrées.

b) Commandes externes

Ces commandes sont les exécutables de programme C distinct. Ceux-ci ne font pas partie de la coquille. Ce sont des endroits sur un chemin spécifique. Shell regarde ces chemins, exécute les programmes et affiche la sortie. L'ajout d'une nouvelle commande à la liste des commandes connues est facile; Copiez simplement un nouveau programme / commande exécutable sur le chemin connu. Généralement, ces commandes sont placées dans le chemin comme / usr / bin, / usr / sbin, etc. Tous les emplacements sont spécifiés dans le chemin.

Dans mon système, le chemin connu vers le shell qui est la commande echo peut être vérifié pour obtenir la liste complète du chemin:

Ubuntu @ srathore: $ echo $ path
/ Home / Cienauser /.local / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr /
bin: / sbin: / bin: / usr / jeux: / usr / local / jeux: / snap / bin

Si nous voulons introduire un nouveau chemin vers cette liste, nous pouvons mettre à jour les valeurs des variables d'environnement de chemin. La commande «Exporter» peut être utilisée pour mettre à jour le chemin avec les nouvelles valeurs.

À l'aide de la commande «Type», nous pouvons obtenir que n'importe quelle commande est intégrée ou externe. Comprenons l'utilisation de «type». L'exécution du type avec «CD» donne la sortie suivante:

Ubuntu @ srathore: ~ / $ type CD
Le CD est une coque intégrée
Ubuntu @ srathore: ~ / $

La sortie de la commande précédente est explicite.

Maintenant, essayons la commande «Type» avec la commande lspci:

Ubuntu @ srathore: ~ / $ type lspci
lspci est / usr / bin / lspci
Ubuntu @ srathore: ~ / $

Comme la sortie montre le chemin de l'exécutable, nous pouvons conclure qu'il s'agit d'une commande externe.

Variables d'environnement

Il existe peu de variables d'environnement qui sont définies pour la coquille. Jusqu'à présent, nous avons compris la variable de chemin. Le chemin est une variable d'environnement qui fournit la liste du chemin à rechercher des commandes externes. La liste complète des variables d'environnement peut être vérifiée à l'aide de la commande ENV. La commande envoie la liste complète des variables d'environnement.

Quelques exemples pour les variables d'environnement de Shell sont:

  • Chemin: la liste des chemins pour les commandes externes.
  • Shell: le type de shell qui est actuellement actif.
  • OldPWD: le dernier répertoire de travail.
  • PWD: fait référence au répertoire de travail actuel.
  • Utilisateur: le nom d'utilisateur du shell actif.
  • Accueil: Le répertoire domestique de l'utilisateur.

Il y en a beaucoup plus. Comme discuté précédemment, la liste complète peut être vérifiée avec la commande env.

Changer les variables environnementales

Les valeurs nécessaires peuvent être directement attribuées à la variable, car Shell nous permet d'utiliser l'opérateur d'affectation. La valeur actuelle de toute variable de shell peut être vue à l'aide de la commande echo. Par exemple, si nous voulons vérifier la valeur du chemin. L'exécution de la commande suivante devrait être en mesure de le faire:

Echo $ Path

Utilisation de l'opérateur $ avant la variable à l'intérieur du shell imprime la valeur de la variable. Ceci est l'offrande de la commande echo. De même, Echo peut être utilisé pour imprimer n'importe quelle variable d'environnement.

Si nous voulons mettre à jour la variable de chemin, nous voulons mettre à jour le chemin personnalisé comme / usr / cutoM que nous voulons ajouter au chemin. Nous plaçons nos commandes Cutom sur ce chemin. Pour que le shell exécute ces commandes, sa valeur doit être mise à jour dans le chemin. Sans mettre à jour le chemin si nous exécutons ces programmes personnalisés, nous obtenons l'erreur en disant: «Aucun fichier ou répertoire de ce type». Cette erreur indique clairement que le shell n'est pas en mesure de localiser les commandes.

En tant qu'expérience, nous présentons notre commande personnalisée, MyLS et MyPS, dans le / Home / Srathore / Custom. Lorsque nous exécutons MYLS ou MYPS de / Home / Srathore, nous avons le message suivant du shell:

srathore @ srathore: ~ $ myls
La commande «Myls» n'est pas trouvée, vouliez-vous dire:
Commandez «Tyls» de Deb Terminology
Commande 'MMLS' de Deb Sleuthkit
Essayez: Sudo Apt Install
srathore @ srathore: ~ $ myps
La commande «Myps» n'est pas trouvée, vouliez-vous dire:
Commande 'mypy' de Deb mypy
Essayez: Sudo Apt Install
srathore @ srathore: ~ $

Les messages précédents montrent que ces commandes ne sont pas trouvées et qu'une suggestion est donnée par le système d'exploitation pour installer ces commandes.

Maintenant, ajoutons le nouveau chemin personnalisé au chemin existant comme suit:

srathore @ srathore: ~ $ echo $ path
/ Home / Cienauser /.local / bin: / usr / local / sbin: / usr / local / bin:
/ usr / sbin: / usr / bin: / sbin: / bin: / usr / jeux: / usr / local / jeux: / snap / bin
srathore @ srathore: ~ $ export path = $ path: / home / srathore / coutume
srathore @ srathore: ~ $ echo $ path
/ Home / Cienauser /.local / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin:
/ sbin: / bin: / usr / jeux: / usr / local / games: / snap / bin: / home / srathore / personnalisé
srathore @ srathore: ~ $

Notre chemin nouvellement ajouté est mis en évidence en gras. Nous pouvons voir que la variable d'environnement de chemin est mise à jour avec la nouvelle valeur.

Maintenant, essayons à nouveau d'exécuter les commandes qui sont présentes dans notre chemin personnalisé. En exécutant «Myps» et «Myls», nous avons la sortie suivante:

srathore @ srathore: ~ $ myps
Pid tty time cmd
2112 pts / 0 00:00:00 bash
2783 PTS / 0 00:00:00 MYPS
srathore @ srathore: ~ $ myls
un.OUT INSTALLÉ SPD_TOOL BUILD_ROOT_FS KERNEL_ARTICles Patches Stime
Coreboot Kernel_ubuntu pCIe_Transfer_app stime.c
bash_arm Custom lmsensors Redfishtool telnet_scripts nvm_cli
OpenSSH SNAP
srathore @ srathore: ~ $

Les journaux précédents montrent que les deux commandes fonctionnaient parfaitement. Nous n'avons eu aucune erreur comme nous l'avons observé avant de mettre à jour la variable de chemin. Nous avons discuté de la variable Shell la plus importante, que nous modifions généralement dans nos travaux de développement quotidien. Si nous installons un nouveau package, cette variable est mise à jour afin que les nouvelles commandes d'outil puissent être facilement localisées par le shell.

Conclusion

Nous avons discuté de la définition de Shell. Nous avons également vu la philosophie derrière la mise en œuvre des différents types de commandes fournies par Shell et les variables environnementales de la coquille. Nous avons également traversé quelques variables d'environnement. Plus important encore, nous avons discuté de la variable de chemin. Nous avons également vu le moyen de mettre à jour le chemin et l'importance de la variable qui est démontrée par un exemple. Nous avons appris l'importance de Shell et de ses offres.