Dans les systèmes basés sur Linux et Unix, les variables d'environnement sont un ensemble de valeurs nommées dynamiques, stockées dans le système et utilisées par les applications lancées dans des shells ou des sous-shells. En termes simples, une variable d'environnement est une variable avec un nom et une valeur associée.
Les variables d'environnement vous permettent de personnaliser le fonctionnement du système et le comportement des applications sur le système. Par exemple, la variable d'environnement peut stocker des informations sur l'éditeur de texte ou le navigateur par défaut, le chemin d'accès aux fichiers exécutables ou les paramètres régionaux du système et la disposition du clavier.
Dans ce guide, nous expliquerons comment lire et définir les variables d'environnement et de shell.
Variables d'environnement et variables shell #
Les variables ont le format suivant :
KEY=value
KEY="Some other value"
KEY=value1:value2
- Les noms des variables sont sensibles à la casse. Par convention, les variables d'environnement doivent avoir des noms en MAJUSCULES.
- Lorsque vous attribuez plusieurs valeurs à la variable, elles doivent être séparées par les deux points
:
caractère. - Il n'y a pas d'espace autour des égaux
=
symbole.
Les variables peuvent être classées en deux catégories principales, les variables d'environnement et les variables shell.
Variables d'environnement sont des variables disponibles à l'échelle du système et héritées par tous les processus et shells enfants générés.
Variables shell sont des variables qui s'appliquent uniquement à l'instance de shell actuelle. Chaque shell tel que zsh
et bash
, possède son propre ensemble de variables shell internes.
Il existe plusieurs commandes disponibles qui vous permettent de lister et de définir des variables d'environnement sous Linux :
env
– La commande vous permet d'exécuter un autre programme dans un environnement personnalisé sans modifier celui en cours. Lorsqu'il est utilisé sans argument, il imprimera une liste des variables d'environnement actuelles.printenv
– La commande imprime toutes ou les variables d'environnement spécifiées.set
– La commande définit ou annule les variables shell. Lorsqu'il est utilisé sans argument, il imprimera une liste de toutes les variables, y compris les variables d'environnement et du shell, et les fonctions du shell.unset
– La commande supprime les variables shell et d'environnement.export
– La commande définit les variables d'environnement.
Liste des variables d'environnement #
La commande la plus utilisée pour afficher les variables d'environnement est printenv
. Si le nom de la variable est passé en argument à la commande, seule la valeur de cette variable est affichée. Si aucun argument n'est spécifié, printenv
imprime une liste de toutes les variables d'environnement, une variable par ligne.
Par exemple, pour afficher la valeur du HOME
variable d'environnement que vous exécuteriez :
printenv HOME
La sortie imprimera le chemin de l'utilisateur actuellement connecté :
/home/linuxize
Vous pouvez également passer plusieurs arguments au printenv
commande :
printenv LANG PWD
en_US
/home/linuxize
Si vous exécutez le printenv
ou env
commande sans aucun argument, elle affichera une liste de toutes les variables d'environnement :
printenv
La sortie ressemblera à ceci :
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;...
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_US
S_COLORS=auto
XDG_SESSION_ID=5
USER=linuxize
PWD=/home/linuxize
HOME=/home/linuxize
SSH_CLIENT=192.168.121.1 34422 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/linuxize
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LANGUAGE=en_US:
LOGNAME=linuxize
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv
Voici quelques-unes des variables d'environnement les plus courantes :
USER
- L'utilisateur actuellement connecté.HOME
- Le répertoire personnel de l'utilisateur actuel.EDITOR
- L'éditeur de fichier par défaut à utiliser. C'est l'éditeur qui sera utilisé lorsque vous tapezedit
dans votre terminal.SHELL
- Le chemin du shell de l'utilisateur actuel, tel que bash ou zsh.LOGNAME
- Le nom de l'utilisateur actuel.PATH
- Une liste de répertoires à rechercher lors de l'exécution des commandes. Lorsque vous exécutez une commande, le système recherche ces répertoires dans cet ordre et utilise le premier exécutable trouvé.LANG
- Les paramètres régionaux actuels.TERM
- L'émulation de terminal actuelle.MAIL
- Emplacement où le courrier de l'utilisateur actuel est stocké.
Le printenv
et env
Les commandes n'impriment que les variables d'environnement. Si vous souhaitez obtenir une liste de toutes les variables, y compris l'environnement, le shell et les variables, et les fonctions du shell, vous pouvez utiliser le set
commande :
set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
La commande affichera une grande liste de toutes les variables, vous voudrez donc probablement diriger la sortie vers le less
commande.
set | less
Vous pouvez également utiliser la commande echo pour imprimer une variable shell. Par exemple, pour imprimer la valeur du BASH_VERSION
variable que vous exécuteriez :
echo $BASH_VERSION
4.4.19(1)-release
Configuration des variables d'environnement #
Pour mieux illustrer la différence entre les variables Shell et Environnement, nous allons commencer par définir les variables Shell, puis passer aux variables d'environnement.
Pour créer une nouvelle variable shell avec le nom MY_VAR
et la valeur Linuxize
tapez simplement :
MY_VAR='Linuxize'
Vous pouvez vérifier que la variable est définie en utilisant soit echo $MY_VAR
de filtrer la sortie de la commande set avec grepset | grep MY_VAR
:
echo $MY_VAR
Linuxize
Utilisez le printenv
commande pour vérifier si cette variable est une variable d'environnement ou non :
printenv MY_VAR
La sortie sera vide, ce qui nous indiquera que la variable n'est pas une variable d'environnement.
Vous pouvez également essayer d'imprimer la variable dans un nouveau shell et vous obtiendrez une sortie vide.
bash -c 'echo $MY_VAR'
Le export
La commande est utilisée pour définir les variables d'environnement.
Pour créer une variable d'environnement, exportez simplement la variable shell en tant que variable d'environnement :
export MY_VAR
Vous pouvez le vérifier en exécutant :
printenv MY_VAR
Linuxize
Si vous essayez d'imprimer la variable dans un nouveau shell cette fois, vous obtiendrez le nom de la variable imprimé sur votre terminal :
bash -c 'echo $MY_VAR'
Linuxize
Vous pouvez également définir des variables d'environnement sur une seule ligne :
export MY_NEW_VAR="My New Var"
Les variables d'environnement créées de cette manière ne sont disponibles que dans la session en cours. Si vous ouvrez un nouveau shell ou si vous vous déconnectez, toutes les variables seront perdues.
Variables d'environnement persistantes #
Pour rendre les variables d'environnement persistantes, vous devez définir ces variables dans les fichiers de configuration bash. Dans la plupart des distributions Linux, lorsque vous démarrez une nouvelle session, les variables d'environnement sont lues à partir des fichiers suivants :
-
/etc/environment
- Utilisez ce fichier pour configurer des variables d'environnement à l'échelle du système. Les variables de ce fichier sont définies au format suivant :FOO=bar
VAR_TEST="Test Var"
-
/etc/profile
- Les variables définies dans ce fichier sont chargées chaque fois qu'un shell de connexion bash est entré. Lors de la déclaration des variables d'environnement dans ce fichier, vous devez utiliser leexport
commande :export JAVA_HOME="/path/to/java/home"
export PATH=$PATH:$JAVA_HOME/bin
-
Fichiers de configuration spécifiques au shell par utilisateur. Par exemple, si vous utilisez Bash, vous pouvez déclarer les variables dans le
~/.bashrc
:export PATH="$HOME/bin:$PATH"
Pour charger les nouvelles variables d'environnement dans la session shell en cours, utilisez le source
commande :
source ~/.bashrc
Conclusion #
Dans ce guide, nous vous avons montré comment définir et répertorier les variables d'environnement et de shell.
N'hésitez pas à laisser un commentaire si vous avez des questions.