Trucs de geek : Les variables d'environnement

Les variables d'environnement sont présentes dans toutes les commandes que vous passez. Alors autant les maîtriser !

Pour les connaître saisissez à la console :

$ export -p

et vous obtenez :

declare -x COLORFGBG="15;0"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-Rzb96sJAzP,guid=010f2f293ff92d9e2d1f6cd2524a6584"
declare -x DEFAULTS_PATH="/usr/share/gconf/kde-plasma.default.path"
declare -x DESKTOP_SESSION="kde-plasma"
declare -x DISPLAY=":0"
declare -x GDMSESSION="kde-plasma"
declare -x GS_LIB="/home/jfd/.fonts"
declare -x GTK2_RC_FILES="/etc/gtk-2.0/gtkrc:/home/jfd/.gtkrc-2.0:/home/jfd/.kde/share/config/gtkrc-2.0"
declare -x GTK_MODULES="overlay-scrollbar"
declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/jfd/.gtkrc:/home/jfd/.kde/share/config/gtkrc"
declare -x HOME="/home/jfd"
declare -x JAVA_HOME="/usr/java/jre1.7.0_05/"
declare -x KDE_FULL_SESSION="true"
declare -x KDE_MULTIHEAD="false"
declare -x KDE_SESSION_UID="1000"
declare -x KDE_SESSION_VERSION="4"
declare -x KONSOLE_DBUS_SERVICE=":1.35"
declare -x KONSOLE_DBUS_SESSION="/Sessions/1"
declare -x KONSOLE_PROFILE_NAME="Terminal"
declare -x LANG="fr_FR.UTF-8"
declare -x LANGUAGE="fr:en"
declare -x LC_ADDRESS="fr_FR.UTF-8"
...

declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LIBGL_DRIVERS_PATH="/usr/lib/fglrx/dri:/usr/lib/x86_64-linux-gnu/dri:/usr/lib/dri:/usr/lib32/fglrx/dri:/usr/lib/i386-linux-gnu/dri"
declare -x LOGNAME="jfd"
...

declare -x MANDATORY_PATH="/usr/share/gconf/kde-plasma.mandatory.path"
declare -x OLDPWD
declare -x ORACLE_HOME="/usr/lib/oracle/11.2/client64/"
declare -x PATH="/usr/java/jre1.7.0_05/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/oracle/11.2/client64//bin"
declare -x PROFILEHOME=""
declare -x PWD="/home/jfd"
declare -x QT_PLUGIN_PATH="/home/jfd/.kde/lib/kde4/plugins/:/usr/lib/kde4/plugins/"
declare -x SHELL="/bin/bash"
declare -x SHELL_SESSION_ID="0dd2eec5f3b44000be1761c2f0d6c256"
declare -x SHLVL="1"
declare -x SSH_AGENT_PID="2107"
declare -x SSH_AUTH_SOCK="/tmp/ssh-ckOZx5azJ6I8/agent.2013"
declare -x TERM="xterm"
declare -x TEXTDOMAIN="im-config"
declare -x TEXTDOMAINDIR="/usr/share/locale/"
declare -x UBUNTU_MENUPROXY="libappmenu.so"
declare -x USER="jfd"
declare -x WINDOWID="46137371"
declare -x XAUTHORITY="/tmp/kde-jfd/xauth-1000-_0"
declare -x XCURSOR_THEME="Oxygen_White"
declare -x XDG_CONFIG_DIRS="/etc/xdg/xdg-kde-plasma:/etc/xdg"
declare -x XDG_CURRENT_DESKTOP="KDE"
declare -x XDG_DATA_DIRS="/usr/share:/usr/share/kde-plasma:/usr/local/share/:/usr/share/"
declare -x XDG_RUNTIME_DIR="/run/user/jfd"
declare -x XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0"
declare -x XDG_SESSION_COOKIE="1a0bad84e9bd9195a4550d7200000008-1380607362.113441-1055320633"
declare -x XDG_SESSION_PATH="/org/freedesktop/DisplayManager/Session0"

Si vous aviez un doute maintenant que vous voyez la variable PATH, vous devez être convaincu.

Pour afficher une seule variable d'environnement :

$ echo $PATH

qui donne ici :

/usr/java/jre1.7.0_05/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/oracle/11.2/client64//bin

Pour créer une variable d'environnement il faut faire un export :

$  export VA='/opt'

que l'on peut réutiliser ensuite dans une autre commande :

$ ls $VA

qui donne chez moi :

jdk  jdk1.5.0_22  pac  WireframeSketcherStudio

Si vous ne faites pas d'export la variable existe bien mais n'est utilisable que dans la cession courante. Si vous comptez l'utiliser dans un script cela ne marchera pas car un script crée un nouvel environnement auquel n'appartient pas votre variable.

Un exemple sera plus instructif :

$ VA2='/home'

On peut l'utiliser dans un

$ ls $VA2

mais dans un script comme celui ci :

#!/bin/bash
echo $VA

Son exécution donne une ligne vide car VA2 n'a pas de valeur affectée.

Pour ajouter un nouveau répertoire à la variable PATH :

$ export PATH=$PATH:/opt/WireframeSketcherStudio/bin

On peut vérifier par un echo qui donne :

/usr/java/jre1.7.0_05/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/oracle/11.2/client64//bin:/opt/WireframeSketcherStudio/bin

Fait le 01/10/2013

 

Tags: