Les variables d’environnement existent pour améliorer et standardiser votre environnement shell sur les systèmes Linux. Il existe des variables d’environnement standard que le système configure pour vous, mais vous pouvez également configurer vos propres variables d’environnement, ou éventuellement modifier celles par défaut pour répondre à vos besoins.

Démarrer avec la commande env

Si vous voulez voir vos variables d’environnement, utilisez la commande env et recherchez les mots en majuscules à l’extrême gauche de la sortie. Ce sont vos variables d’environnement, et leurs valeurs sont à droite :

J’ai omis la sortie de la variable LS_COLORS car elle est très longue. Essayez cette commande sur votre système pour voir à quoi ressemble la sortie complète.

De nombreuses variables d’environnement sont définies puis exportées depuis le fichier /etc/profile et le fichier /etc/bashrc. Il y a une ligne dans /etc/profile qui se lit comme suit :

 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

Pour apporter des modifications permanentes aux variables d’environnement pour tous les nouveaux comptes, allez dans vos /etc/skel fichiers, comme .bashrc, et modifiez celles qui sont déjà présentes ou entrez les nouvelles. Lorsque vous créez de nouveaux utilisateurs, ces /etc/skel fichiers seront copiés dans le répertoire personnel du nouvel utilisateur.

Explorer les niveaux de l’interpréteur de commandes (SHLVL)

Pour appeler la valeur d’une seule variable d’environnement, entrez la commande suivante, en utilisant SHLVL (Niveau de l’interpréteur de commandes) comme exemple :

 $ echo $SHLVL 1

Cette variable change en fonction du nombre de sous-hélices que vous avez ouvertes. Par exemple, tapez bash deux fois, puis lancez à nouveau la commande:

 $ bash $ bash echo $SHLVL 3

Un niveau de shell de trois signifie que vous êtes à deux sous-shells de profondeur, alors tapez exit deux fois pour revenir à votre shell habituel.

Manipulation de votre variable PATH

La variable PATH contient le chemin de recherche pour l’exécution des commandes et des scripts. Pour voir votre PATH, entrez:

 $ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

Modifiez temporairement votre PATH en entrant la commande suivante pour ajouter /opt/bin :

 $ PATH=$PATH:/opt/bin$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin

Ce changement est temporaire pour la session en cours. Elle n’est pas permanente car elle n’est pas saisie dans le fichier .bashrc. Pour rendre la modification permanente, entrez la commande PATH=$PATH:/opt/bin dans le fichier .bashrc de votre répertoire personnel.

Lorsque vous faites cela, vous créez une nouvelle variable PATH en ajoutant un répertoire à la variable actuelle PATH$PATH. Un deux-points (:) sépare les entrées PATH.

Démêler $USER, $PWD, et $LOGNAME

J’avais une théorie qui, je pense, a été dissipée par ma propre personne. Ma théorie était que les commandes pwd et whoami ont probablement juste lu et répercuté le contenu des variables shell $PWD et $USER ou $LOGNAME, respectivement. À ma grande surprise, après avoir regardé le code source, ils ne le font pas. Je devrais peut-être les réécrire pour qu’ils le fassent. Il n’y a aucune raison d’ajouter de multiples bibliothèques et près de 400 lignes de code C pour afficher le répertoire de travail. Vous pouvez simplement lire $PWD et en faire l’écho à l’écran (stdout). Il en va de même pour whoami avec soit $USER ou $LOGNAME.

Si vous voulez jeter un coup d’œil au code source par vous-même, il se trouve sur GitHub et d’autres endroits. Si vous constatez que ces programmes (ou d’autres) utilisent effectivement des variables shell, j’aimerais le savoir. Il est vrai que je ne suis pas très doué pour lire le code source C, donc ils pourraient très bien utiliser des variables shell sans que je le sache. Ils ne semblaient tout simplement pas le faire d’après ce que j’ai lu et pu comprendre.

Playing the $SHELL game

Dans ce dernier aperçu des variables d’environnement, je veux vous montrer comment la variable $SHELL est utile. Vous n’êtes pas obligé de rester dans votre shell par défaut, qui est probablement Bash. Vous pouvez entrer et travailler dans n’importe quel shell installé sur le système. Pour savoir quels shells sont installés sur votre système, utilisez la commande suivante :

 $ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash

Vous pouvez utiliser n’importe lequel de ces shells et avoir différentes choses qui se passent dans chacun d’eux si vous en avez envie. Mais, disons que vous êtes un administrateur Solaris et que vous voulez utiliser le shell Korn. Vous pouvez changer votre shell par défaut en /bin/ksh en utilisant la commande chsh :

 $ chsh Changing shell for khess. New shell : /bin/ksh Password: Shell changed.

Maintenant, si vous tapez echo $SHELL, la réponse sera /bin/bash, vous devez donc vous déconnecter et vous reconnecter pour voir le changement. Une fois que vous vous déconnectez et que vous vous reconnectez, vous recevrez une réponse différente de echo $SHELL.

Vous pouvez entrer dans d’autres shells et echo $SHELL devrait signaler votre shell actuel et $SHLVL, ce qui vous permettra de rester orienté quant à la profondeur de vos shells.

Définir vos propres variables d’environnement

Vous pouvez définir vos propres variables à la ligne de commande par session, ou les rendre permanentes en les plaçant dans le fichier ~/.bashrc~/.profile, ou quel que soit le fichier de démarrage que vous utilisez pour votre shell par défaut. Sur la ligne de commande, entrez votre variable d’environnement et sa valeur comme vous l’avez fait précédemment lors de la modification de la variable PATH.

Wrapping up

Les variables de shell ou d’environnement sont utiles aux utilisateurs, aux sysadmins et aux programmeurs. Elles sont utiles sur la ligne de commande et dans les scripts. Je les ai utilisées au fil des ans pour de nombreux objectifs différents, et bien que certaines d’entre elles soient probablement un peu non conventionnelles, elles ont fonctionné et fonctionnent toujours. Créez les vôtres ou utilisez ceux qui vous sont fournis par le système et les applications installées. Ils peuvent vraiment enrichir votre expérience d’utilisateur de Linux.

En guise de remarque sur les variables et les shells, quelqu’un pense-t-il que ceux qui programment en JSON ne devraient être autorisés à utiliser que le Bourne Shell ? Discutez-en.

Catégories : Articles

0 commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *