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 export
commande:
$ 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 ls instructions de code de sortie couleur pour l' ls instruction 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 | pushd Et popd commandez 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_history le nombre de lignes dans le fichier. |
HISTSIZE | La mémoire permet le stockage du nombre de lignes de l'historique des commandes, qui histroy commandent 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 set la 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 env
commande 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 set
commande 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, env
et la printenv
fonction 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 env
commande et de printenv
commande. Par exemple, à l'aide de la printenv
commande, 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
printenv
Et la env
commande 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 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=()
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 less
la 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 set
commande 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 $MYVAR
pour vérifier que la variable est définie:
$ echo $MYVAR
lxlinux
Utilisez la printenv
commande 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.
export
Les commandes peuvent être utilisées pour définir des variables d'environnement. Pour créer une variable d'environnement, utilisez simplement export
la 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 unset
commande 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.bashrc
ou /etc/environment
file.
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: