GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir et répertorier les variables d'environnement sous Linux

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 tapez edit 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=barVAR_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 le export 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.


Linux
  1. Comment définir et supprimer des variables d'environnement locales, utilisateur et système sous Linux

  2. Variables d'environnement Linux :comment lire et définir sur un VPS Linux

  3. Comment gérer et répertorier les services sous Linux

  4. Comment définir, répertorier et supprimer des variables d'environnement sous Linux

  5. Variables d'environnement utilisateur avec "su" et "sudo" sous Linux

Comment définir et répertorier les variables d'environnement sous Linux

Comment définir/annuler les variables d'environnement sous Linux

Comment répertorier les utilisateurs et les groupes sous Linux

Comment définir la date et l'heure sous Linux

Comment définir et supprimer des variables d'environnement sous Linux

Variables d'environnement Linux