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.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- 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`barpuis rien du toutbarpuisbar- Rien puis
bar - Rien puis rien
Voir la réponse
barpuis rien du toutFOO=barcrée une variable du shell, lisible parecho(qui est interprété par le shell lui-même).printenvest 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 $HOMEaffiche le répertoire ….Voir la réponse
Pour lire la valeur d'une variable, on la fait précéder d'un dollar :
echo $HOMEaffiche 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=1crée seulement une variable du shell ;export Xouexport X=1la rend visible aux programmes lancés.printenv Xn'affiche que les variables exportées.Un outil installé dans
~/binse lance avec~/bin/outil, maisoutilrépond « bash: outil: command not found ». Quelles sont la cause et la solution ?~/binn'est pas dansPATH: 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
~/binn'est pas dansPATH: l'y ajouter dans~/.bashrcAvec un chemin explicite, le shell ne consulte pas
PATH; avec un nom seul, il ne cherche que dans les répertoires dePATH. Le fichier est exécutable, puisque~/bin/outilse lance.hash -rn'oublie que des commandes déjà trouvées, etsudone cherche pas davantage dans~/bin.