Comment utiliser les variables d’environnement sous Linux ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à utiliser les variables d'environnement sous Linux. Sur les différents systèmes d'exploitation, les variables d'environnement jouent un rôle précieux, c'est donc une notion à connaître.
Une variable d'environnement est déclarée au niveau du système. Il s'agit d'une variable utilisée par des processus ou des applications afin de définir des chemins ou des raccourcis d'information. Le fait qu'elles soient accessibles par les différents processus est une différence notable en comparaison des variables définies dans le shell.
Cet article explique comment lister les variables d'environnement, mais également comment définir ou supprimer une variable d'environnement. J'utilise une machine sous Kali Linux, mais vous pouvez utiliser une autre distribution (Debian, Ubuntu, RHEL, Fedora, Rocky Linux, etc.).
Version originale : 13 décembre 2012
II. Les variables d'environnement les plus courantes
Que ce soit sous Linux ou Windows, il y a des variables d'environnement prédéfinies. Voici les plus courantes :
- HOSTNAME : nom d'hôte
- PWD : répertoire de travail actuel, c'est-à-dire le répertoire dans lequel on se situe (d'un point de vue du shell)
- HOME : emplacement du répertoire personnel de l'utilisateur, que l'on appelle son "home"
- SHELL : interpréteur de commandes actuel (bash, zsh, ...)
- LOGNAME : nom de l'utilisateur actuellement connecté.
- UID : identifiant unique de l'utilisateur (par exemple : 1000). Information visible dans le fichier /etc/passwd.
Cette liste n'est pas exhaustive et peut varier d'une distribution à une autre.
Remarque : la casse est importante dans le nom des variables !
Nous pouvons, sous Linux, voir les variables d'environnement qui sont présentes par défaut en entrant l'une des deux commandes suivantes :
printenv env
Pour une meilleure visibilité s'il y a beaucoup de variables d'environnement, utilisez cette commande pour parcourir la liste progressivement :
printenv | less
Ce qui retourne, par exemple :
Les variables d'environnement sont dynamiques, c'est à dire que leurs valeurs peuvent chacune changer en fonction de divers paramètres comme l'utilisateur, l'endroit où l'on se trouve sur le serveur, le langage que nous utilisons, etc.
À titre d'exemple, nous pouvons nous pencher sur la variable "$PWD" pour mieux comprendre le fonctionnement d'une variable d'environnement. Si nous nous rendons dans "/var" puis que nous regardons le contenu de la variable d'environnement "$PWD", nous aurons ce résultat :
cd /var echo $PWD
Si maintenant nous nous rendons dans "/home" et que nous faisons la même chose, nous verrons que la variable n'a plus la même valeur !
cd /home echo $PWD
En lisant cet article, vous venez de remarquer une chose : nous pouvons afficher le contenu d'une variable en précédent son d'un "$" et de la commande "echo". Nous pouvons aussi utiliser printenv. Ce qui donne :
echo $PWD
printenv PWD
Sur une machine Linux, chaque utilisateur peut avoir des variables d'environnement spécifiques, bien qu'il y ait des variables d'environnement déclarées au niveau de la machine.
III. Définir une variable d'environnement sous Linux
Pour définir une nouvelle variable, nous pouvons utiliser la syntaxe suivante :
NomVariable=ValeurVariable
Voici un exemple :
SCRIPTS=/home/kali/scripts/
Le problème, c'est que cette variable est accessible uniquement dans notre shell actuel. Autrement dit, elle n'est pas accessible par les autres processus, car c'est une simple variable shell. De ce fait, elle ne sera pas visible dans le résultat de la commande printenv.
Pour "transformer" la variable shell en variable d'environnement, nous devons utiliser la commande export. Ce qui donne :
export SCRIPTS=/home/kali/scripts/
Ainsi, elle sera présente dans la liste des variables d'environnement :
À tout moment, nous pouvons afficher la valeur de cette variable :
echo $SCRIPTS
Elle retourne bien la valeur "/home/kali/scripts". On pourra alors utiliser cette variable dans un fichier de configuration, un script, etc...
Attention, il est important de préciser que cette variable d'environnement n'est disponible que pour la session en cours !
Comment faire pour créer une variable d'environnement persistante ? C'est ce que nous allons voir.
IV. Créer une variable d'environnement persistante sous Linux
Une variable d'environnement peut être persistante pour un seul utilisateur ou pour tous les utilisateurs de la machine. A vous de voir, selon vos besoins.
Pour que ce soit persistant pour votre utilisateur actuel, vous devez ajouter la commande export (identique à celle précisée précédemment) dans le fichier "/home/$USER/.bashrc" de l'utilisateur en cours. Vous pouvez éditer ce fichier nano ou vi...
nano /home/$USER/.bashrc
Puis, vous ajouter la ou les variables d'environnement de votre choix :
Le fichier ".bashrc" sera chargé lorsque le shell actuel sera relancé. Sinon, vous pouvez charger le fichier immédiatement avec cette commande :
source ~/.bashrc
Désormais, les variables d'environnement sont présentes dans votre session.
Pour créer une variable d'environnement pour tous les utilisateurs, ce qui est utile et nécessaire avec certaines applications (connecteur ODBC Oracle, par exemple), vous devez créer un fichier ".sh" dans le répertoire suivant :
/etc/profile.d/
Il contient déjà des fichiers. Vous pouvez ajouter le vôtre, par exemple :
sudo nano /etc/profile.d/var.sh
Il suffit d'ajouter la ligne "export" et le tour est joué !
V. Supprimer une variable d'environnement
La suppression d'une variable peut se faire avec la commande "unset" qui est faite pour effacer complètement une variable d'environnement (pour la session en cours !) :
unset $SCRIPTS
Pour supprimer une variable d'environnement de façon définitive, pensez à retirer sa déclaration dans le fichier ".bashrc" ou le fichier dans "profile.d"
On pourra ensuite vérifier que la variable a été correctement supprimée :
printenv
VI. Conclusion
Suite à la lecture de ce tutoriel, vous en savez beaucoup plus sur l'utilisation et le fonctionnement des variables d'environnement sur une machine Linux !
Pour supprimer une variable d’environnement il faut utilser:
unset VAR et non unset $VAR.
Bien vu. Merci.
Bounjour m: Florian BURNEL je suis on formation cybersécurité en CNAM et je besoin de site internet pour faire les conpitons ou netr pour le pratique svp