Les variables d'environnement existent pour améliorer et standardiser votre environnement shell sur les systèmes Linux. Il existe des variables d'environnement standard que le système configure pour vous, mais vous pouvez également configurer vos propres variables d'environnement ou éventuellement modifier celles par défaut pour répondre à vos besoins.
[ Téléchargement gratuit :Aide-mémoire sur les commandes Linux avancées. ]
En commençant par env
commande
Si vous voulez voir vos variables d'environnement, utilisez le env
commande et recherchez les mots en majuscules à l'extrême gauche de la sortie. Voici vos variables d'environnement, et leurs valeurs sont à droite :
$ env
LS_COLORS=(long output)
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=rhel8t
XDG_SESSION_ID=5
USER=khess
SELINUX_ROLE_REQUESTED=
PWD=/home/khess
HOME=/home/khess
SSH_CLIENT=192.168.1.94 53911 22
SELINUX_LEVEL_REQUESTED= XDG_DATA_DIRS=/home/khess/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_TTY=/dev/pts/1
MAIL=/var/spool/mail/khess
TERM=xterm-256color
SHELL=/bin/bash SELINUX_USE_CURRENT_RANGE=
SHLVL=1
LOGNAME=khess
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000 PATH=/home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
HISTSIZE=1000
LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env
J'ai omis la sortie du LS_COLORS
variable parce qu'il est trop long. Essayez cette commande sur votre système pour voir à quoi ressemble la sortie complète.
De nombreuses variables d'environnement sont définies puis exportées depuis le /etc/profile
fichier et le /etc/bashrc
dossier. Il y a une ligne dans /etc/profile
qui lit :
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
Pour apporter des modifications permanentes aux variables d'environnement pour tous les nouveaux comptes, accédez à votre /etc/skel
fichiers, tels que .bashrc
, et modifiez ceux qui sont déjà là ou entrez les nouveaux. Lorsque vous créez de nouveaux utilisateurs, ces /etc/skel
les fichiers seront copiés dans le répertoire personnel du nouvel utilisateur.
Explorer les niveaux du shell (SHLVL
)
Pour appeler la valeur d'une seule variable d'environnement, entrez la commande suivante, en utilisant SHLVL
(Niveau Shell) à titre d'exemple :
$ echo $SHLVL 1
Cette variable change en fonction du nombre de sous-shells ouverts. Par exemple, saisissez bash
deux fois, puis relancez la commande :
$ bash
$ bash echo $SHLVL 3
Un niveau de shell de trois signifie que vous êtes à deux sous-shells, alors tapez exit
deux fois pour revenir à votre shell habituel.
[Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.]
Manipulation de votre PATH
variables
Le PATH
La variable contient le chemin de recherche pour exécuter des commandes et des scripts. Pour voir votre PATH
, saisissez :
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Modifiez temporairement votre PATH
en entrant la commande suivante pour ajouter /opt/bin
:
$ PATH=$PATH:/opt/bin
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
Le changement est temporaire pour la session en cours. Il n'est pas permanent car il n'est pas entré dans le .bashrc
dossier. Pour rendre le changement permanent, entrez la commande PATH=$PATH:/opt/bin
dans le .bashrc
de votre répertoire personnel fichier.
Lorsque vous faites cela, vous créez un nouveau PATH
variable en ajoutant un répertoire au PATH
actuel variable, $PATH
. Deux-points (:
) sépare PATH
entrées.
Démêler $USER
, $PWD
, et $LOGNAME
J'avais une théorie qui, je pense, a été dissipée par mon bon moi. Ma théorie était que les commandes pwd
et whoami
probablement juste lu et renvoyé en écho le contenu des variables shell $PWD
et $USER
ou $LOGNAME
, respectivement. À ma grande surprise, après avoir regardé le code source, ce n'est pas le cas. Peut-être que je devrais les réécrire pour faire exactement cela. Il n'y a aucune raison d'ajouter plusieurs bibliothèques et près de 400 lignes de code C pour afficher le répertoire de travail. Vous pouvez simplement lire $PWD
et l'écho à l'écran (stdout). Il en va de même pour whoami
avec soit $USER
ou $LOGNAME
.
Si vous voulez jeter un œil au code source par vous-même, c'est sur GitHub et ailleurs. Si vous trouvez que ces programmes (ou d'autres) utilisent des variables shell, j'aimerais le savoir. Certes, je ne suis pas très doué pour lire le code source C, donc ils pourraient très bien utiliser des variables shell et je ne le saurais jamais. D'après ce que j'ai lu, ils ne semblaient tout simplement pas comprendre.
Jouer le $SHELL
jeu
Dans ce dernier aperçu des variables d'environnement, je veux vous montrer comment le $SHELL
la variable est pratique. Vous n'êtes pas obligé de rester dans votre shell par défaut, qui est probablement Bash. Vous pouvez entrer et travailler dans n'importe quel shell installé sur le système. Pour savoir quels shells sont installés sur votre système, utilisez la commande suivante :
$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
Tous ces éléments sont en fait Bash, alors ne vous excitez pas. Si vous avez de la chance, vous pourriez également voir des entrées pour /bin/tcsh
, /bin/csh
, /bin/mksh
, /bin/ksh
, et /bin/rksh
.
Vous pouvez utiliser n'importe lequel de ces shells et avoir des choses différentes dans chacun d'eux si vous le souhaitez. Mais, disons que vous êtes un administrateur Solaris et que vous souhaitez utiliser le shell Korn. Vous pouvez changer votre shell par défaut en /bin/ksh
en utilisant le chsh
commande :
$ chsh Changing shell for khess. New shell [/bin/bash]: /bin/ksh Password: Shell changed.
Maintenant, si vous tapez echo $SHELL
, la réponse sera /bin/bash
, vous devez donc vous déconnecter et vous reconnecter pour voir le changement. Une fois déconnecté et connecté, vous recevrez une réponse différente à echo $SHELL
.
Vous pouvez entrer d'autres shells et echo $SHELL
devrait indiquez votre shell actuel et $SHLVL
, ce qui vous permettra de savoir combien de coques vous avez de profondeur.
Définir vos propres variables d'environnement
Vous pouvez définir vos propres variables sur la ligne de commande par session, ou les rendre permanentes en les plaçant dans le ~/.bashrc
fichier, ~/.profile
, ou le fichier de démarrage que vous utilisez pour votre shell par défaut. Sur la ligne de commande, entrez votre variable d'environnement et sa valeur comme vous l'avez fait précédemment lors de la modification du PATH
variables.
Conclusion
Les variables de shell ou d'environnement sont utiles aux utilisateurs, aux administrateurs système et aux programmeurs. Ils sont utiles sur la ligne de commande et dans les scripts. Je les ai utilisés au fil des ans à de nombreuses fins différentes, et bien que certains d'entre eux soient probablement un peu non conventionnels, ils ont fonctionné et fonctionnent toujours. Créez les vôtres ou utilisez ceux qui vous sont fournis par le système et les applications installées. Ils peuvent vraiment enrichir votre expérience utilisateur Linux.
En passant sur les variables et les shells, est-ce que quelqu'un pense que ceux qui programment en JSON ne devraient être autorisés à utiliser que le Bourne Shell ? Discutez.