Les variables d'environnement

Le commande set permet d'obtenir la liste des variables paramétrées pour le shell courant.

$ set
BASH=/bin/bash
HOME=/home/toto
HOSTNAME=myhostname
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h$
PS2='> '
PS4='+ '
SHELL=/bin/bash
...

Le caractère $ permet d'obtenir la valeur d'une variable :

$ echo $BASH
/bin/bash

Pour créer ou modifier une variable :

$ VARIABLE='valeur'
$ echo $VARIABLE
valeur

Attention, car toutes variables créées ou modifiées de cette manière ne sont valables que pour la session en cours.

$ MAVARIABLE='<= Ceci est le contenu de ma variable =>'
$ echo $MAVARIABLE
<= Ceci est le contenu de ma variable =>

Les principales variables :

HOME : cette variable contient le chemin du répertoire d'accueil de l'utilisateur.

PATH : cette variable contient une liste de répertoire dans lesquels le shell recherche toutes les commandes qui sont exécutées.
Si une commande est exécutée et qu'elle ne se trouve dans aucun des répertoires indiqués dans la variable PATH, une erreur sera retournée en indiquant que la commande est introuvable.
Si l'on souhaite exécuter une commande qui se trouve dans un répertoire non indiqué dans la variable PATH, il suffit tout simplement de modifier le contenu de la variable.

$ PATH=$PATH:/leRepertoireDeMaCommande

Pour modifier la variable PATH définitivement, il suffit d'ajouter une ligne au fichier ~/.bashrc :

> export PATH=$PATH:/mon_autre_repertoire

Ou modifier directement le fichier /etc/environment :

> PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/mon_autre_repertoire"

Pour exécuter une commande présente dans le répertoire courant, il suffit d'ajouter à la variable PATH la valeur ":." ou ":".

PWD : cette variable contient le chemin du répertoire courant.

PS1 : cette variable contient la chaine de caractères correspondant au prompt ($ en règle générale).

Pour faire apparaitre la valeur du répertoire courant dans le prompt :

$ PS1='$PWD$ '
ou
$ PS1='\w$ '

BASH : Séquence d'échappement permettant de paramétrer la variable PS1

Séquence échappement Valeur
\u Nom de l'utilisateur
\h Nom de la machine
\w Répertoire courant
\W Partie terminale du répertoire courant

PS2 : cette variable contient la chaine de caractères correspondant au prompt secondaire (> en règle générale).

$ echo 'ceci est le début
> de ma chaine de texte
> et tant que je ne saisi pas
> le caractère apostrophe
> ça continue
> '
ceci est le début
de ma chaine de texte
et tant que je ne saisi pas
le caractère apostrophe
ça continue
$

$ mail toto<<fin
> un autre exemple
>
> fin
$

TERM : cette variable contient le type du terminal de l'utilisateur.

LOGNAME : cette variable contient le nom de l'utilisateur connecté.

Exporter des variables :

Il est parfois nécessaire d'exporter une variable car toutes ne le sont pas.
Pour savoir quelles sont les variables exportées d'office il suffit d'utiliser la commande env.

$ env
TERM=xterm
SHELL=/bin/bash
CDPATH=:.:/home/
USER=toto
...

Pour exporter une variable :

$ MAVARIABLE='maValeur'
$ export MAVARIABLE

ou

$ export MAVARIABLE='maValeur'

Par exemple, en BASH, pour utiliser le programme nano (éditeur de texte) comme éditeur par défaut du programme mutt (client mail en ligne de commande), il suffit d'inscrire dans son fichier ~/.bashrc :

export EDITOR=/usr/bin/nano

et pour une prise en compte immédiate, sans être obligé de se reconnecter, saisir dans la console :

$ export EDITOR=/usr/bin/nano
Et pour vérifier :
$ set | grep EDITOR
EDITOR=/usr/bin/nano
$ env | grep EDITOR
EDITOR=/usr/bin/nano