Les Variables et l'Environnement
Écrit par VieuxProf   
01-01-1999

  • Une variable est associée à une zone de mémoire pour conserver ou échanger une chaîne de texte. Elle est identifiée par un nom (caractères alphanumériques et _).
  • Elle a une portée locale limitée au shell qui l'a créée mais elle peut être exportée et devient globale. On la note alors en majuscules.
  • création d'une variable :
    $ [readonly] mavariable=sa_valeur
    $ [readonly] mavariable="sa valeur"
    $ [readonly] mavariable='sa valeur'
  • remplacement d'une variable par sa valeur :
    $mavariable
    ${mavariable}

set affiche toutes les variables définies
unset mavariable supprime une variable locale ou globale
export affiche toutes les variables exportées
export mavariable=savaleur place mavariable dans l'environnement
env affiche toutes les variables d'environnement



variables prédéfinies définie lors de la connexion en interne par le shell ou dans ~/.profile - portée globale
- modifiables par l'utilisateur
-
variables positionnelles (réservées) définies par le shell - portée locale (dans le script)
- modifiables par l'utilisateur
- correspondent aux paramètres numérotés d'un script
variables spéciales (réservées) définies par le shell - portée globale
- non modifiables par l'utilisateur
ex. : $ contient le PID du shell courant
variables utilisateur définies par l'utilisateur - portée locale par défaut
- portée globale si exportées ou dans ~/.profile
- modifiables par l'utilisateur
-
variables d'environnement définies par le shell, les logiciels ou l'utilisateur - portée globale
- imposées par le shell ou les logiciels (non modifiables)
ou
- exportées par l'utilisateur ou dans ~/.profile (modifiables)
-



  • L'environnement est l'ensemble des variables d'environnement. Il est initialement constitué des variables prédéfinies et spéciales, complété après connexion par les variables utilisateurs définies dans les fichiers .profile.
  • Une variable d'environnement est une variable dont le shell fournit une copie à sa descendance.
  • Quelques variables d'environnement :

     

    HOME répertoire de connexion
    IFS séparateur de champs
    LOGNAME nom de l'utilisateur
    MAIL fichier de BAL
    PATH chemin vers les binaires
    PS1 invite de prompt primaire ($)
    PS2 invite de prompt secondaire (>)
    PWD répertoire courant
    TERM type de terminal
    TZ fuseau-horaire GMT (non-GNU)

     

  • Le fichier /etc/profile définit des paramètres généraux et des variables d'environnement pour l'ensemble des utilisateurs. Il est géré par root.
  • Le fichier ~/.profile exécuté par l'utilisateur à chaque connexion complète et modifie le fichier /etc/profile. On y trouve :
  1. des variables d'environnement
  2. des options du shell
  3. des paramètres du terminal
  4. des droits attribués lors de la création des fichiers.

  • Un script peut recevoir des arguments qui sont affectés aux variables positionnelles $0 (nom du script), $1, ...${10},etc.
    Exécution du script avec arguments : $ monscript argument1 argument2 argument3
    On peut utiliser en complément les variables spéciales suivantes :

     

    * ensemble des paramètres sous forme d'un seul argument
    @ ensemble des paramètres, un argument par paramètre
    # nombre de paramètres passés au script
    $ PID du shell courant

     

  • La commande '$ shift [n]' permet de décaler les paramètres vers la gauche de n positions.
  • La commande '$ set argument1 argument2 argument3' permet de remplacer les paramètres d'un script. Elle est souvent utilisée pour isoler les mots d'une ligne et éviter l'emploi des filtres (voir Exemples).
  • La commande '$ read variable1 variable2 variable3' permet de créer des scripts interactifs. Elle range le 1er mot dans la 1ère variable, le 2ème dans la 2ème, etc.



Caractères ExpressionInterprétation
$, ${} $mavariable, ${mavariable} mavariable est remplacée si elle existe par sa valeur, sinon par rien
${:-} ${mavariable:-monargument} mavariable est remplacée si elle existe par sa valeur, sinon par la chaine monargument
${:+} ${mavariable:+monargument} mavariable est remplacée si elle existe par monargument, sinon par rien
${:+?} ${mavariable:?monargument} mavariable est remplacée si elle existe par sa valeur, sinon affichage d'un message d'erreur contenant monargument et sortie du shell
${:=} ${mavariable:=monargument} mavariable est remplacée si elle existe par sa valeur, sinon par la chaine monargument et mavariable est créée et initialisée à la valeur monargument
Dernière mise à jour : ( 02-02-2008 )