Masquer les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
![]() |
1.1 | 1 | {{toc/}} |
| 2 | |||
| 3 | == Présentation == | ||
![]() |
2.1 | 4 | |
![]() |
3.1 | 5 | Les **variables d’environnement** sont des paires ##nom=valeur## utilisées par le shell et les applications. |
![]() |
1.1 | 6 | Elles stockent des **informations de configuration**, comme la langue, le nom d’utilisateur, le chemin de recherche des commandes, etc. |
| 7 | |||
| 8 | Elles sont visibles et modifiables par l’utilisateur courant, et peuvent être temporaires ou permanentes. | ||
| 9 | |||
![]() |
3.1 | 10 | ---- |
![]() |
1.1 | 11 | |
| 12 | == Quelques variables courantes == | ||
| 13 | |||
![]() |
3.1 | 14 | |=Variable|=Description |
| 15 | |##$USER##|Nom de l’utilisateur connecté | ||
| 16 | |##$HOME##|Répertoire personnel | ||
| 17 | |##$PATH##|Liste des dossiers contenant les commandes | ||
| 18 | |##$LANG##|Langue et encodage utilisés | ||
| 19 | |##$SHELL##|Shell utilisé (souvent ##/bin/bash##) | ||
![]() |
1.1 | 20 | |
![]() |
3.1 | 21 | ---- |
![]() |
2.1 | 22 | |
![]() |
1.1 | 23 | == Afficher les variables existantes == |
![]() |
2.1 | 24 | |
![]() |
1.1 | 25 | {{code language="bash"}} |
| 26 | printenv | ||
| 27 | # ou | ||
| 28 | env | ||
| 29 | # ou pour une variable spécifique : | ||
![]() |
3.1 | 30 | echo "$HOME" |
![]() |
1.1 | 31 | {{/code}} |
| 32 | |||
![]() |
3.1 | 33 | ---- |
![]() |
1.1 | 34 | |
| 35 | == Définir une variable temporaire == | ||
![]() |
2.1 | 36 | |
![]() |
1.1 | 37 | {{code language="bash"}} |
| 38 | NOM=John | ||
![]() |
3.1 | 39 | echo "$NOM" |
![]() |
1.1 | 40 | {{/code}} |
| 41 | |||
| 42 | Cela ne sera valable **que pour le shell courant**. | ||
| 43 | |||
![]() |
3.1 | 44 | ---- |
![]() |
1.1 | 45 | |
| 46 | == Rendre une variable accessible à un script ou un sous-processus == | ||
![]() |
2.1 | 47 | |
![]() |
1.1 | 48 | Il faut l’**exporter** : |
| 49 | |||
| 50 | {{code language="bash"}} | ||
| 51 | export NOM=John | ||
| 52 | ./mon_script.sh | ||
| 53 | {{/code}} | ||
| 54 | |||
![]() |
3.1 | 55 | Le script pourra utiliser ##$NOM##. |
![]() |
1.1 | 56 | |
![]() |
3.1 | 57 | ---- |
![]() |
1.1 | 58 | |
| 59 | == Définir une variable de façon permanente == | ||
![]() |
2.1 | 60 | |
![]() |
3.1 | 61 | Ajouter la ligne dans l’un de ces fichiers : |
![]() |
1.1 | 62 | |
![]() |
3.1 | 63 | * ##~~/.bashrc## → pour les shells interactifs |
| 64 | * ##~~/.profile## ou ##~~/.bash_profile## → à la connexion | ||
![]() |
2.1 | 65 | |
![]() |
1.1 | 66 | Exemple : |
| 67 | |||
![]() |
3.1 | 68 | {{code language="bash"}} |
| 69 | export EDITOR=nano | ||
| 70 | export PATH="$PATH:$HOME/bin" | ||
| 71 | {{/code}} | ||
![]() |
1.1 | 72 | |
![]() |
3.1 | 73 | Puis recharger avec : |
![]() |
1.1 | 74 | |
![]() |
3.1 | 75 | {{code language="bash"}} |
![]() |
4.1 | 76 | source ~/.bashrc |
![]() |
3.1 | 77 | {{/code}} |
| 78 | |||
| 79 | ---- | ||
| 80 | |||
![]() |
1.1 | 81 | == Astuce : tester si une variable existe == |
![]() |
2.1 | 82 | |
![]() |
1.1 | 83 | {{code language="bash"}} |
| 84 | if [ -z "$MON_VAR" ]; then | ||
| 85 | echo "MON_VAR n'est pas définie" | ||
| 86 | fi | ||
| 87 | {{/code}} | ||
| 88 | |||
![]() |
3.1 | 89 | En mode strict (##set -u##), une variable non définie interrompt le script. Prévoir une valeur par défaut : |
![]() |
1.1 | 90 | |
![]() |
3.1 | 91 | {{code language="bash"}} |
| 92 | echo "${MON_VAR:-valeur_par_defaut}" | ||
| 93 | {{/code}} | ||
| 94 | |||
| 95 | ---- | ||
| 96 | |||
![]() |
1.1 | 97 | == Bonnes pratiques == |
![]() |
2.1 | 98 | |
![]() |
1.1 | 99 | * Utiliser **des majuscules** pour les noms (convention POSIX) |
![]() |
3.1 | 100 | * Éviter les noms trop courts (##T##, ##X##, ##D##) qui pourraient entrer en conflit |
| 101 | * Toujours entourer les variables de **guillemets** (##"$VAR"##) dans les scripts pour éviter les bugs avec des espaces | ||
| 102 | * Ne jamais mettre de mot de passe ni de jeton dans une variable exportée : elle est lisible par tous les processus de la session. Préférer un fichier réservé à root, chargé avec ##.## au moment voulu | ||
![]() |
1.1 | 103 | |
![]() |
3.1 | 104 | ---- |
![]() |
1.1 | 105 | |
| 106 | == Liens internes == | ||
![]() |
2.1 | 107 | |
![]() |
3.1 | 108 | * [[Retour à la section Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]] |
![]() |
2.1 | 109 | * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]] |
