Android

Comment définir et lister les variables d'environnement sous Linux

Le syndrome d'Ehlers-Danlos - PDVS XXL #6

Le syndrome d'Ehlers-Danlos - PDVS XXL #6

Table des matières:

Anonim

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, qui sont utilisées par les applications lancées en shells ou 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 les paramètres de 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 d'environnement

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 UPPER CASE. Lorsque vous affectez plusieurs valeurs à la variable, elles doivent être séparées par le caractère deux-points : n'y a pas d'espace autour du symbole equals = .

Les variables peuvent être classées en deux catégories principales, les variables d'environnement et les variables de shell.

Les variables d'environnement sont des variables disponibles à l'échelle du système et héritées par tous les processus enfants et shells générés.

Les variables shell sont des variables qui s'appliquent uniquement à l'instance shell actuelle. Chaque shell, comme zsh et bash , possède son propre ensemble de variables internes au shell.

Il existe plusieurs commandes disponibles qui vous permettent de répertorier 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 affichera 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 supprime les variables shell. Lorsqu'il est utilisé sans argument, il affichera une liste de toutes les variables, y compris les variables d'environnement et de shell, et les fonctions de shell. unset - La commande supprime le shell et les variables 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 de la variable d'environnement HOME , vous devez exécuter:

printenv HOME

La sortie affichera le chemin de l'utilisateur actuellement connecté:

/home/linuxize

Vous pouvez également transmettre plusieurs arguments à la commande printenv :

printenv LANG PWD

en_US /home/linuxize

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 fichiers par défaut à utiliser. Il s'agit de l'éditeur qui sera utilisé lorsque vous taperez 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 locaux actuels. TERM - L'émulation de terminal actuelle. MAIL - Emplacement de stockage du courrier de l'utilisateur actuel.

Les commandes printenv et env impriment uniquement 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 la commande set :

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 souhaiterez probablement diriger la sortie vers la commande less .

set | less

Vous pouvez également utiliser la commande echo pour imprimer une variable shell. Par exemple, pour imprimer la valeur de la variable BASH_VERSION , vous devez exécuter:

echo $BASH_VERSION

4.4.19(1)-release

Définition des variables d'environnement

Pour mieux illustrer la différence entre les variables d'environnement et Shell, nous allons commencer par définir les variables d'environnement, 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 filtrage de la sortie de la commande set avec grep set | grep MY_VAR set | grep MY_VAR :

echo $MY_VAR

Linuxize

Utilisez la commande printenv pour vérifier si cette variable est une variable d'environnement ou non:

printenv MY_VAR

La sortie sera vide ce qui nous indique que la variable n'est pas une variable d'environnement.

Vous pouvez également essayer d'imprimer la variable dans un sous-shell et vous obtiendrez une sortie vide.

bash -c 'echo $MY_VAR'

La commande d' export 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

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 ainsi créées 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 les 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é. Lorsque vous déclarez des variables d'environnement dans ce fichier, vous devez utiliser la commande d' export :

    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 actuelle, utilisez la commande source :

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.

Terminal