Tutoriel de la commande Linux printenv pour les débutants (avec des exemples)

Les variables d’environnement jouent un rôle majeur dans Linux. La plupart des programmes, qu’ils soient basés sur la ligne de commande ou sur une interface graphique, traitent les variables d’environnement d’une manière ou d’une autre. Il existe donc naturellement des outils qui te permettent d’accéder aux variables d’environnement à partir de la ligne de commande.

L’un de ces outils est printenv. Dans ce tutoriel, nous allons parler de la commande printenv en utilisant quelques exemples faciles à comprendre. Mais avant cela, il est bon de mentionner que tous les exemples ici ont été testés sur une machine Ubuntu 20.04 LTS.

Commande printenv de Linux

La commande printenv de Linux te donne la possibilité d’afficher tout ou partie de l’environnement. Voici sa syntaxe :

printenv [OPTION]... [VARIABLE]...

Et voici comment la page de manuel de l’outil la définit :

Print the values of the specified environment VARIABLE(s). If no VARIABLE is specified, print 
name and value pairs for them all.

Voici quelques exemples sous forme de questions-réponses qui devraient te donner une meilleure idée du fonctionnement de la commande printenv.

Q1. Comment utiliser printenv ?

L’utilisation de base est assez simple. Tout ce que tu as à faire, c’est d’exécuter printenv sans aucun argument.

printenv

Voici le résultat produit sur mon système :

CLUTTER_IM_MODULE=xim
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_MENU_PREFIX=gnome-
LANG=en_IN
DISPLAY=:0
GNOME_SHELL_SESSION_MODE=ubuntu
COLORTERM=truecolor
USERNAME=himanshu
XDG_VTNR=2
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
XDG_SESSION_ID=2
USER=himanshu
DESKTOP_SESSION=ubuntu
QT4_IM_MODULE=xim
TEXTDOMAINDIR=/usr/share/locale/
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/44c42800_9a68_408d_8539_7a0e414b7986
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
PWD=/home/himanshu
HOME=/home/himanshu
TEXTDOMAIN=im-config
SSH_AGENT_PID=1918
QT_ACCESSIBILITY=1
XDG_SESSION_TYPE=x11
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
XDG_SESSION_DESKTOP=ubuntu
GJS_DEBUG_OUTPUT=stderr
GTK_MODULES=gail:atk-bridge
WINDOWPATH=2
TERM=xterm-256color
SHELL=/bin/bash
VTE_VERSION=5201
QT_IM_MODULE=xim
[email protected]=ibus
IM_CONFIG_PHASE=2
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GNOME_TERMINAL_SERVICE=:1.61
XDG_SEAT=seat0
SHLVL=1
GDMSESSION=ubuntu
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=himanshu
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/run/user/1000/gdm/Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
SESSION_MANAGER=local/himanshu:@/tmp/.ICE-unix/1823,unix/himanshu:/tmp/.ICE-unix/1823
LESSOPEN=| /usr/bin/lesspipe %s
GTK_IM_MODULE=ibus
_=/usr/bin/printenv

Tu peux donc voir que presque toutes les variables d’environnement définies dans mon système ont été produites dans le résultat.

Q2. Comment faire pour que printenv n’affiche que des informations sélectionnées ?

Si tu veux que printenv n’affiche que les détails relatifs à une variable d’environnement spécifique dans le résultat, il te suffit de donner le nom de cette variable en entrée de la commande.

Voici un exemple :

printenv SHELL

Et voici la sortie produite par cette commande :

/bin/bash

Bien sûr, tu peux ajouter d’autres variables à la liste des entrées. Par exemple, la commande suivante :

printenv SHELL HOME

a produit le résultat indiqué ci-dessous :

/bin/bash
/home/himanshu

Q3. Comment faire pour que printenv utilise NUL au lieu de newline ?

Par défaut, la commande printenv utilise newline comme caractère de fin entre les entrées de sortie. Cependant, si tu le souhaites, tu peux faire en sorte que l’outil utilise NUL comme terminaison à la place.

Pour cela, tu devras utiliser l’option de ligne de commande –null. Voici un exemple :

printenv --null SHELL HOME

Et voici une capture d’écran de la sortie produite par rapport à l’utilisation de printenv sans l’option –null :

Conclusion

Si ton travail en ligne de commande Linux implique de traiter des variables d’environnement, la commande printenv est un outil important à retenir. Dans ce tutoriel, nous avons abordé la majorité des options offertes par cet outil. Une fois que tu as fini de t’exercer (la courbe d’apprentissage n’est pas raide, donc cela ne devrait pas prendre de temps), tu peux te rendre sur la page de manuel de printenv pour en savoir plus sur cet utilitaire de ligne de commande.

Vous aimerez aussi...