Bienvenue sur Parlons Linux FR, aujourd'hui nous allons parler des variables d'environnement,
c'est VIP du terminal, tout d'abord une petite introduction, tu ouvres ton terminal,
tu tapes une commande et ça marche comme par magie, mais c'est tu comment ton système
sait où chercher tes programmes, dans quelle langue t'afficher les messages ou encore
quel utilisateur tu es ? Et bien derrière tout ça il y a des petites ouvrières silencieuses
les variables d'environnement, ce sont elles qui définissent le comportement de ton système
et de tes logiciels sans que tu aies besoin d'y penser, mais alors comment fonctionne-t-elle
ou les trouver, comment les modifier, c'est ce qu'on va voir ensemble. Qu'est-ce qu'une
variable d'environnement ? Une variable d'environnement c'est une paire de clés
valeurs qui stockent une information utilisée par le système ou les applications, on va prendre
quelques exemples classiques, la variable USER qui contient le nom de l'utilisateur actuel,
la variable HOME qui indique le chemin du dossier personnel, la variable LANG qui définit la
langue du système, ou la variable SHELL qui indique quel interpréter de comment on est utilisé,
si c'est du bash, du ZSH ou tout autre interpréteur ou émulateur. Chaque programme peut
consulter ces variables pour adapter son comportement. Il existe des règles et conventions
pour ces variables, notamment la sensibilité à la casse, une variable écrit en majuscule
est différente de cette même variable écrit en minuscule, notamment en parlant de majuscule,
c'est une convention pour les distinguer des variables de script.
Les variables ne doivent pas utiliser d'espace dans leur nom, on utilise par exemple l'underscore (_)
pour créer des espaces. Et également attention au conflit, modifier la variable PATH sans
précaution peut empêcher le système de trouver ses commandes. On va y revenir sur cette
fameuse variable un petit peu plus loin. Mais d'abord, où sont stockés ces variables ? Selon
leur portée, les variables sont définies à différents endroits. Il y a d'abord les variables
globales qui sont pour tous les utilisateurs, que ce soit des utilisateurs réels ou systèmes,
elles sont généralement dans /etc/environnement ou /etc/profile, que je vous
déconseille de modifier, nous le verrons par la suite, ou dans /etc/profile.d/ . Il
y a également les variables spécifiques à un utilisateur, là ce sera dans votre dossier personnel
ou dans le dossier personnel de l'utilisateur et elles seront soit dans le .bashrc ou dans
le .bash_profile ou dans le .profile tout simplement. Et il y a également les variables
de session uniquement, elles sont définies temporairement dans le shell avec la command export
et si une variable est définie dans plusieurs fichiers, la dernière chargée l'emporte.
Les variables critiques et notamment la variable PATH, PATH c'est où chercher les commandes. Le
PATH c'est une variable essentielle qui définit où chercher les exécutables et donc vous le
devinez un PATH mal configuré peut empêcher d'accéder aux commandes. Vous pouvez vérifier
votre PATH avec la commande echo, $PATH, écrit en majuscule, c'est valable pour toutes les
autres variables d'environnement, un echo $ vous permettra de récupérer l'information. Il y a
des exemples dangereux à éviter, un exemple totalement aléatoire que je donne par exemple c'est de
modifier la variable PATH en lui donnant comme valeur /tmp. Ici le système ne
cherchera des commandes que dans /tmp et du coup ça risque de plus rien d'exécuter. En cas de
manipulation hasardeuse de votre de vos variables vous pouvez les restaurer en faisant un source
/etc/profile par exemple d'où l'intérêt de ne pas modifier ce dossier là ou du moins quand
on est sûr de ce qu'on fait. Vous avez également les librairies partagées notamment les bibliothèques
partagées du moins où il faut éviter de modifier par exemple ne pas ajouter de points au PATH sur
une librairie partagée car ajouter le point c'est ajouter le dossier courant dans le PATH qui
peut-être dangereux. Une commande d'exécuter dans un répertoire douteux pourrait remplacer une
commande système par exemple et donc il faut préférer les chemins absolus par exemple /
bin/ls /USER/bin/env. Voilà ça c'était pour les précautions d'usage
et la nomenclature. Maintenant comment on fait pour manipuler ces variables d'environnement ?
D'abord on va pouvoir les afficher donc comme je disais vous avez la commande echo quand vous
connaissez les variables ou alors si vous voulez voir les variables qui sont disponibles pour
l'utilisateur actuel celui que vous allez utiliser pour les commandes vous pouvez utiliser la
commande env ou printenv. Ces deux commandes dans cet usage là font la même chose mais
chacune de ces commandes a des options bien spécifiques et je vous invite à utiliser
le manuel de ces commandes pour en apprendre plus. Vous pouvez également afficher une valeur
spécifique. Vous verrez que le retour sera strictement le même en faisant un printen
v USER. La seule différence c'est que le printenv USER, USER étant écrit en majuscule,
il n'a pas besoin du dollar qui précède le nom de la variable là où quand on veut passer par
echo il faudra utiliser le $USER le tout attaché. On peut définir une variable temporaire
pour se faire c'est simple on utilise la commande export le nom de votre variable par exemple export
pseudo= on ouvre les guillemets et on met un pseudo dans ces guillemets par exemple moi je vais
mettre John. Une fois cela fait on tape entrée et puis on peut vérifier que cette variable est
prise en compte en faisant echo dollar pseudo par exemple. Cette variable existera uniquement
dans un section actuelle et là du coup vient la question mais comment on fait pour la ronde
persistante pour qu'une variable soit conservée après le redémarrage il faut la stocker soit
dans le point bas chrc ou dans le point profile. Comme je vous ai parlé de la méthode et que la
commande source pour restaurer le passe je vous invite à utiliser plutôt le bas chrc au lieu
du profile. Pour déteste cela fonctionne très bien et au moins au cas d'erreur vous pourrez
ressourcer le point profile afin de récupérer un environnement utilisable. Il existe des variables
internes. Ah non d'abord oui donc on peut faire echo simple guillemets export pseudo égal double
guillemets dans mon cas John on ferme les guillemets double et les simples on fait un espace deux signes
plus grand que puis point bas chrc ensuite nous pouvons sourcer c'est à dire recharger la configuration
du bas chrc en faisant un source point bas chrc. Voilà votre variable est devenue persistante. Il y a
des variables internes à bash. Ils en bash proposent ses propres variables internes qui
influent son fonctionnement. Vous avez la variable random qui donne des chiffres aléatoires. Vous
avez la variable second qui donne le temps écoulé depuis l'ouverture du shell. Vous avez la variable
uid qui donne l'identifiant utilisateur à ne pas confondre avec la variable USER. La variable
uid vous donnera des chiffres. Vous avez la variable pwd qui donne le répertoire actuel ou la variable
old pwd tout attaché qui donne le répertoire précédent. Vous avez une commande qui vous permet
de voir toutes ces variables qui sont internes à bash. La commande est un peu plus long. Vous
les trouverez dans la note de l'émission qui est 7sct un espace tiré au posix point virgule 7. Le tout
avec des parenthèses. Afin de consulter et de mieux comprendre et de conserver toutes ces variables
pour des recherches, je vous invite à enregistrer ces variables dans un fichier texte pour les
consulter plus tard, les trier, etc. Vous pouvez faire ceci en regardant les notes de l'émission qui
sera plus parlant que ce que je vais dire à présent qui est parenthèse ou rentre 7 tiré au posix point
virgule 7. Fermez les parenthèses un espace plus grand que votre nom de fichier texte variable
bash.txt. Vous pouvez le vérifier que c'est bien enregistré en faisant un 4 variable.txt ou bien
l'ouvrir avec votre éditeur de texte favori nano vim ou un éditeur de texte graphique. En
conclusion les variables d'environnement sont la clé pour bien comprendre comment fonctionne un
système Linux, elles permettent d'adapter son environnement à tes besoins et d'optimiser
tes scripts. Bien les connaître, c'est éviter les erreurs et comprendre comment Linux gère son
fonctionnement en coulisses.