Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/06/2015, à 13:43

ShinouQ

Mais où sont les variables d'environnement?

Bonjour,
les variables d'environnement on sait à peu près tous ce que c'est, mais j'ai une question qui paraît bête mais pour laquelle je ne trouve pas de réponse...
Où, dans l'architecture de l'OS, sont stockées les variables d'environnement? Y a-t-il un fichier qui stocke les variables d'env? Car bon savoir que les variables d'env sont visibles via une commande "env", ça me permet pas de savoir où elles sont concrètement!

Merci d'avoir pris le temps de lire et bonne après-midi wink

Dernière modification par ShinouQ (Le 12/06/2015, à 14:08)

Hors ligne

#2 Le 12/06/2015, à 14:41

genma

Re : Mais où sont les variables d'environnement?

Tu devrais avoir toutes tes réponses en détail ici
Variables d'environnement persistantes :
https://doc.ubuntu-fr.org/variables_d_e … rsistantes


"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ?      https://blog.genma.fr
Mon twitter?     http://twitter.com/genma

Hors ligne

#3 Le 12/06/2015, à 21:32

ShinouQ

Re : Mais où sont les variables d'environnement?

J'ai parcouru les 3 fichiers dits dans lesquels seraient stockées les var. d'env. (/etc/profile - /etc/environment - /etc/bash.bashrc) mais je ne vois rien de concluant, aucune mention des variables d'environnement renvoyées par la commande 'env' dans les fichiers...

Dernière modification par ShinouQ (Le 12/06/2015, à 21:34)

Hors ligne

#4 Le 13/06/2015, à 08:29

tiramiseb

Re : Mais où sont les variables d'environnement?

Salut,

Les variables d'environnement ne sont pas définies dans un fichier comme ça.
Comme leur nom l'indique, elles dépendent de l'environnement.

Quelques exemples :
- les variables "USER" et "HOME" est tirée du champ idoine dans le fichier /etc/passwd (enfin ça c'est par défaut, car les infos concernant les utilisateurs peuvent être stockées ailleurs, par exemple en base LDAP).
- LANG ou LC_CTYPE qui sont définies selon la configuration de langue de l'environnement
- PWD et OLDPWD, c'est selon le répertoire dans lequel tu te situes
- DISPLAY, c'est selon comment a été lancé le serveur graphique (cette variable n'existe pas en console, par exemple)

On peut créer des variables d'environnement, à partir de ces fameux fichiers de configuration, etc... mais ça reste une exception par rapport à toutes les variables qu'on voit avec "env" smile

Hors ligne

#5 Le 13/06/2015, à 11:43

ssdg

Re : Mais où sont les variables d'environnement?

Du coup, user et home sont positionnés par upstart ou lightdm (probablement lightdm d'ailleurs) en configuration graphique et login en console, pwd par login ou lightdm au début puis bash/le dashboard, nautilus quand tu lance un programme.
etc...

J'ai codé un shell, mais quelle variable vient d'ou n'est pas une question que je me suis posé.

Par contre, si la "vraie" question est "comment changer ou créer une variable d'environnement", tu peux le faire à tout moment dans la chaine d'appel de ton programme (d'init à ton executable lui même). lancer un programme ne peut se faire qu'à partir d'un autre programme. (sauf cas exceptionnel du bios) une fois un noyau unix lancé, il lance d'autres programmes (sous ubuntu, c'est init) qui vont en lancer d'autres, d'autres et d'autres. (si tu fais un "ps -fx" en console tu peut voire dans quel état c'est sur ta machine.

Il n'y a pas de "règles" en matière de variables d'environnement. tu peux en créer une qui s'appelle "TOTO_TITI" si tu veux.
Mais cela veut aussi dire que tu peux te faire un petit lancer (genre en bash) qui positionne les variables d'environnement que tu veux à la valeur que tu veux et t'en servir pour lancer le programme que tu veux.


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne