Les variables d'environnement

Variable du shell ou d'environnement, export, env et printenv, PATH, HOME, USER, PWD, SHELL, LANG, l'héritage par les processus fils, ~/.bashrc et which.

  • 26 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Variable d'environnement : de quoi s'agit-il ?

    Voir la réponse

    Nom associé à une valeur texte qui est copié dans chaque processus lancé à partir du shell qui l'a exportée.

    Les programmes y lisent leur contexte : HOME, USER, LANG, EDITOR. Une copie modifiée dans un fils ne remonte pas dans le père.

  • Que montrent ces commandes ?

    ```bash
    FOO=bar
    echo $FOO
    printenv FOO
    `

    • bar puis rien du tout
    • bar puis bar
    • Rien puis bar
    • Rien puis rien
    Voir la réponse

    bar puis rien du tout

    FOO=bar crée une variable du shell, lisible par echo (qui est interprété par le shell lui-même). printenv est un programme à part : il ne voit que l'environnement, donc que les variables exportées. Il sort sans rien afficher.

  • Pour lire la valeur d'une variable, on la fait précéder d'un … : echo $HOME affiche le répertoire ….

    Voir la réponse

    Pour lire la valeur d'une variable, on la fait précéder d'un dollar : echo $HOME affiche le répertoire personnel.

    Pour écrire, il n'y a pas de dollar : NOM=Lea, sans espace autour du signe égal.

  • export : de quoi s'agit-il ?

    Voir la réponse

    Commande qui fait passer une variable du shell dans l'environnement, pour que les processus lancés ensuite en héritent.

    X=1 crée seulement une variable du shell ; export X ou export X=1 la rend visible aux programmes lancés. printenv X n'affiche que les variables exportées.

  • Un outil installé dans ~/bin se lance avec ~/bin/outil, mais outil répond « bash: outil: command not found ». Quelles sont la cause et la solution ?

    • ~/bin n'est pas dans PATH : l'y ajouter dans ~/.bashrc
    • Le fichier n'est pas exécutable : chmod +x ~/bin/outil
    • Le shell garde un ancien résultat en mémoire : hash -r
    • Il manque les droits de root : lancer sudo outil
    Voir la réponse

    ~/bin n'est pas dans PATH : l'y ajouter dans ~/.bashrc

    Avec un chemin explicite, le shell ne consulte pas PATH ; avec un nom seul, il ne cherche que dans les répertoires de PATH. Le fichier est exécutable, puisque ~/bin/outil se lance. hash -r n'oublie que des commandes déjà trouvées, et sudo ne cherche pas davantage dans ~/bin.