Définir et afficher les variables d'environnement dans le système Linux

Bonjour à tous, c'est Liang Xu.

Tout le monde sait que dans les systèmes Linux, il existe deux types de variables: les variables d'environnement et les variables shell .

Les variables d'environnement sont globalement disponibles dans le programme et ses sous-programmes, et sont souvent utilisées pour stocker des informations telles que l'éditeur de texte ou le navigateur par défaut, le chemin du fichier exécutable, etc. Les variables Shell ne sont disponibles que dans le Shell actuel et peuvent être utilisées pour stocker des informations telles que l'ID de l'utilisateur actuel.

Alors, que sont les variables d'environnement, que sont les variables Shell et comment définir et afficher ces deux variables?

Ensuite, laissez Liang Xu répondre à votre place:

Variable d'environnement

Les variables d'environnement sont implémentées sous la forme de paires clé-valeur. Ce sont des variables disponibles dans tout le système et héritées par tous les processus enfants et shells dérivés. Les noms des variables d'environnement sont sensibles à la casse et sont généralement nommés en majuscules (MYVAR1, MYVAR2 ...)

Une variable d'environnement avec une seule valeur ressemble à ceci:

KEY=value1

Si vous souhaitez attribuer plusieurs valeurs à une variable d'environnement, vous utilisez généralement deux points (:) comme séparateur. Chaque paire clé-valeur ressemble finalement à ceci:

KEY=value1:value2:value3

Si la valeur à affecter à la variable d'environnement contient des espaces, vous devez utiliser des guillemets:

KEY="value with spaces"

Variables shell

Les variables Shell sont des variables du Shell qui sont spécifiquement utilisées pour les définir ou les définir. Chaque Shell, tel que zsh et bash, possède son propre ensemble de variables internes Shell. Ils sont généralement utilisés pour suivre les données temporaires, telles que le répertoire de travail actuel, et leur utilisation est la même que celle des variables d'environnement.

Si vous souhaitez utiliser des variables Shell comme variables globales, vous pouvez utiliser la exportcommande:

$ export MYVAR=lxlinux.net
$ echo $MYVAR
lxlinux.net
$ env | grep MYVAR
MYVAR=lxlinux.net

Variables d'environnement et variables shell communes

Certaines variables d'environnement et variables shell sont très utiles et sont souvent citées. Voici quelques variables d'environnement courantes que vous pourriez rencontrer à l'avenir:

Nom de variable sens
TERME Ceci spécifie le type de terminal à simuler lors de l'exécution du Shell. Il peut simuler différents terminaux matériels pour différentes exigences de fonctionnement. Cependant, vous n'avez généralement pas à vous soucier de cette variable.
UTILISATEUR Utilisateur actuellement connecté
PWD Répertoire de travail actuel
OLDPWD Sur un répertoire de travail, cette variable est conservée par Shell, de manière à cd -revenir au répertoire de travail précédent.
LS_COLORS Ceci définit les lsinstructions de code de sortie couleur pour l' lsinstruction de sortie couleur ajoutée. Ceci est généralement utilisé pour distinguer différents types de fichiers et faire connaître à l'utilisateur le type de fichier et d'autres informations en un coup d'œil.
COURRIER Chemin de la boîte aux lettres de l'utilisateur actuel
CHEMIN La liste des répertoires que le système vérifiera lors de la recherche d'instructions. Lorsque l'utilisateur entre une instruction, le système vérifie les répertoires dans l'ordre de cette liste de répertoires pour trouver les fichiers exécutables correspondants.
LANG Paramètres de langue et de localisation actuels, y compris le codage des caractères.
ACCUEIL Répertoire personnel de l'utilisateur actuel
_ La dernière commande exécutée

En plus des variables d'environnement ci-dessus, vous pouvez souvent rencontrer les variables shell suivantes:

Nom de variable sens
BASHOPTS La liste des options qui sont activées lorsque bash est exécuté, ce qui est utile pour déterminer si l'environnement shell s'exécute comme prévu.
BASH_VERSION La version bash en cours d'exécution au format lisible par l'homme
BASH_VERSINFO La version bash en cours d'exécution au format lisible par machine
COLONNES Utilisé pour définir le nombre de colonnes larges d'informations de sortie dessinées à l'écran
DIRSTACK pushdEt popdcommandez la pile de répertoires disponible.
HISTFILESIZE Le nombre de lignes de l'historique des commandes stockées dans le fichier. La valeur par défaut est ~/.bash_historyle nombre de lignes dans le fichier.
HISTSIZE La mémoire permet le stockage du nombre de lignes de l'historique des commandes, qui histroycommandent le nombre de lignes pouvant être imprimées.
HOSTNAME Nom d'hôte de l'ordinateur
IFS Séparateur de champ interne, utilisé pour séparer les entrées sur la ligne de commande. Par défaut, un espace est utilisé comme séparateur.
PS1 Définissez l'invite de commande principale. Ceci est utilisé pour définir l'apparence de l'invite de commande lors du démarrage d'une session shell. PS2 est utilisé pour déclarer une invite de commande qui s'étend sur plusieurs lignes.
SHELLOPTS Vous pouvez utiliser setla commande pour définir l'option Shell.
UID UID (ID utilisateur) de l'utilisateur actuel

Afficher les variables shell et les variables d'environnement

Dans les systèmes Linux, plusieurs commandes vous permettent d'afficher les variables d'environnement:

env- Cette commande vous permet d'exécuter le programme dans un environnement personnalisé sans changer l'environnement actuel. Lorsqu'il est utilisé sans envcommande de paramètres , il imprimera la liste actuelle des variables d'environnement.

printenv - Peut imprimer toutes les variables d'environnement ou spécifiées.

set- Cette commande peut définir ou supprimer des variables Shell. Lorsqu'il est utilisé sans setcommande de paramètres , il imprimera une liste de toutes les variables, y compris les variables d'environnement et les variables, y compris Shell et la fonction Shell.

Par défaut, envet la printenvfonction est exactement la même:

$ printenv 
SSH_CONNECTION=10.0.2.2 37182 10.0.2.15 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=C.UTF-8
XDG_SESSION_ID=5
USER=alvin
MYVAR=lxlinux.net
PWD=/home/alvin
HOME=/home/alvin
SSH_CLIENT=10.0.2.2 37182 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/alvin
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LOGNAME=alvin
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

Seulement dans les fonctionnalités plus spécifiques pour refléter la différence de envcommande et de printenvcommande. Par exemple, à l'aide de la printenvcommande, vous pouvez demander la valeur d'une seule variable:

$ printenv SHELL
/bin/bash
$ printenv HOME
/home/alvin
$ printenv MYVAR
lxlinux.net

env La commande peut modifier l'environnement dans lequel le programme s'exécute en passant un ensemble de variables à la commande:

env MYVAR=lxlinux.net command_to_run command_options

printenvEt la envcommande ne peut imprimer que la variable d'environnement, et si vous souhaitez imprimer une liste de toutes les variables ou la fonction Shell, vous pouvez utiliser la setcommande.

$ 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=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="8")
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="4" [2]="20" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.4.20(1)-release'
COLUMNS=140
DIRSTACK=()
EUID=1000
GROUPS=()
HISTCONTROL=ignoreboth
HISTFILE=/home/alvin/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000
HOME=/home/alvin
HOSTNAME=ubuntu-bionic
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=C.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
LESSOPEN='| /usr/bin/lesspipe %s'
LINES=35
LOGNAME=alvin
.....

Cette commande affichera une grande liste de toutes les variables, vous voudrez peut-être passer à la sortie de lessla commande.

$ set | less

Définir des variables shell et des variables d'environnement

Il existe plusieurs commandes qui peuvent définir des variables d'environnement dans le système Linux:

set- Cette commande peut définir ou désactiver les variables Shell. Lorsqu'il est utilisé sans setcommande de paramètres , il imprimera une liste de toutes les variables, y compris les variables d'environnement et les variables, y compris Shell et la fonction Shell.

unset - Cette commande peut supprimer des variables shell et des variables d'environnement.

export -Cette commande peut définir des variables d'environnement.

Afin de mieux comprendre la différence entre les variables Shell et les variables d'environnement, commençons par définir les variables Shell, puis parlons des variables d'environnement.

Commencez par définir une variable Shell dans la session en cours:

$ MYVAR=lxlinux

Vous pouvez utiliser echo $MYVARpour vérifier que la variable est définie:

$ echo $MYVAR
lxlinux

Utilisez la printenvcommande pour vérifier que la variable est une variable d'environnement:

$ printenv MYVAR

Aucune sortie n'est renvoyée, ce qui signifie que la variable MYVAR n'est pas une variable d'environnement.

exportLes commandes peuvent être utilisées pour définir des variables d'environnement. Pour créer une variable d'environnement, utilisez simplement exportla variable de commande Shell exportée en tant que variables d'environnement:

$ export MYVAR

Vous pouvez vérifier avec la déclaration suivante:

$ printenv MYVAR
lxlinux

Bien sûr, vous pouvez également définir des variables d'environnement avec une seule ligne de code:

$ export MYNEWVAR="My New Variable"

Mais les variables d'environnement ainsi créées ne peuvent être utilisées que dans la session en cours. Si vous ouvrez une nouvelle session Shell ou que vous vous déconnectez, toutes les variables seront perdues.

Nous pouvons également restaurer les variables d'environnement dans les variables Shell, ou les supprimer complètement:

La variable MYVAR est définie comme une variable d'environnement, et nous pouvons la restaurer dans une variable Shell en entrant le code suivant:

$ export -n MYVAR

De cette manière, la variable MYVAR n'est plus une variable d'environnement, mais toujours une variable Shell.

Que ce soit des variables Shell ou des variables d'environnement, vous souhaitez supprimer complètement la variable, vous pouvez utiliser la unsetcommande pour supprimer:

$ unset MYVAR

L'instruction suivante peut être utilisée pour vérifier que la variable MYVAR a été supprimée:

$ echo $MYVAR

Puisque la variable a été supprimée, rien n'est retourné.

Persistance des variables d'environnement

De nombreux programmes doivent utiliser des variables d'environnement pour déterminer la méthode d'exécution spécifique, mais nous ne voulons pas réinitialiser les variables importantes à chaque fois qu'une nouvelle session Shell est démarrée, nous devons donc écrire des variables d'environnement importantes dans le fichier de configuration.

Les sessions shell peuvent être démarrées de différentes manières, par exemple, des shells interactifs connectés au terminal et des shells non interactifs non connectés au terminal, ainsi que des shells de connexion et des shells sans login. Le shell bash varie en fonction des différentes méthodes de démarrage de la session. Lisez différents fichiers de configuration.

Cependant, dans la plupart des distributions Linux, lorsque vous démarrez une nouvelle session Shell, vous lisez généralement les variables d'environnement à partir des fichiers suivants:

/etc/environment - Utilisez ce fichier pour définir les variables d'environnement disponibles à l'échelle du système.

/etc/profile - Chaque fois que bash se connecte à Shell, les variables définies dans ce fichier seront chargées.

~/.bashrc- Fichiers de configuration Shell spécifiques à chaque utilisateur. Par exemple, si vous utilisez Bash, vous pouvez y déclarer des variables.

Si vous souhaitez charger de nouvelles variables d'environnement dans la session Shell actuelle, vous pouvez utiliser la commande source:

$ source ~/.bashrc

Si vous souhaitez définir des variables d'environnement, vous pouvez envisager de l'ajouter à /etc/profile, /etc/bash.bashrcou /etc/environmentfile.

en conclusion

Dans cet article, nous avons découvert certaines variables d'environnement et variables Shell courantes, et nous avons appris à définir et afficher ces variables. En fait, ces variables ont toujours été dans notre session Shell et sont utiles pour de nombreux programmes. Il existe de nombreux Toutes les scènes feront référence à ces variables. J'espère que cela aidera aussi votre travail. Si vous avez encore des questions sur ces deux variables, laissez un message et faites-le moi savoir!

Enfin, récemment, de nombreux amis m'ont demandé une feuille de route d'apprentissage Linux , donc sur la base de mon expérience, j'ai passé un mois à rester debout tard dans mon temps libre et à compiler un livre électronique. Que vous soyez en entretien ou en auto-amélioration, je crois que cela vous aidera! Le répertoire est le suivant:

Donnez-le à tout le monde gratuitement, demandez-moi simplement de me donner un coup de pouce!

Ebook | Feuille de route d'apprentissage du développement Linux

J'espère aussi que quelques amis pourront se joindre à moi pour rendre ce livre électronique plus parfait!

Gain? J'espère que les anciens fers auront un combo à trois coups afin que plus de gens puissent lire cet article

Lecture recommandée:

Je suppose que tu aimes

Origine blog.csdn.net/yychuyu/article/details/108051859
conseillé
Classement