Les variables des Shells

Alain Leroy


Déclaration de variables

Le Shell, quelque soit son type, est un interpréteur de commande, il possède un langage propre permettant la programmation. À ce titre il possède des variables.

Leur déclaration est simple :

Type Bourne Shell (sh, ksh, bash, zsh)
var=valeur
Type C-Shell (csh, tcsh)
set var = valeur

Accès à la valeur d'une variable :

On fait précéder son nom du caractère « $ »

Exemples :

[prompt]$ ma_var=ma_valeur
[prompt]$ echo $ma_var
ma_valeur
[prompt]$ mon_autre_var=$ma_var:mon_autre_valeur
[prompt]$ echo $mon_autre_var
ma_valeur:mon_autre_valeur
[prompt]$

Comme on le voit dans l'exemple ci-dessus, on peut reprendre la valeur d'une variable dans la définition d'une autre variable ou dans la modification de la variable en cours.

Parfois, pour lever toute ambiguïté sur un nom de variable il est préférable de placer son nom entre accolades, de la manière suivante :

[prompt]$ mon_autre_var=${ma_var}:mon_autre_valeur

Subtilités en Bourne Shell

Exemple :

[prompt]$ x=${var:=truc}

Si var est vide ou n'existe pas on la crée éventuellement et on lui affecte la valeur truc et on rend cette valeur pour résultat de l'expression (truc est affecté à x). Si var n'est pas vide alors on rend sa valeur, tout simplement (si var existe et vaut xyz, alors cette valeur est affectée à x).

(C'est compliqué à expliquer... À comprendre aussi sans doute... C'est facile à utiliser quand on l'a fait une fois.)
Et il y a encore d'autres subtilités voisines dans le manuel de référence de sh ou bash. RTFM !

Les variables d'environnement

Certaines variables sont particulières car elles sont hérités par les processus lancés à partir du Shell. On les appelle les variables d'environnement. Leur nom est en général en majuscules mais ce n'est qu'une coutume non obligatoire.

Leur déclaration est la suivante :

Variable d'environnement : type Bourne Shell
NOM_VAR_ENV=valeur   (comme une variable normale)
export NOM_VAR_ENV
en bash on peut faire directement 
export NOM_VAR_ENV=valeur

Attention il n'y a pas d'espace de part et d'autre du signe egal.

Variable d'environnement : type C-Shell
setenv NOM_VAR_ENV valeur   

(il n'y a pas de signe égal)

Visualiser les variables d'environnement

Commande env