Bonjour à toutes et à tous.

J'utilise une Debian 8 (Jessie) avec lightdm et MATE.

Je cherchais un moyen de définir une variable, appelons la MA_VARIABLE et sa 
valeur : ma_valeur.

Si j'ai bien lu et compris toutes les documentations de ces dernières 72 heures 
(entre autres [1], [2], [3] et [4]), il y a plusieurs endroits où je peux 
définir ceci :

Côté système avec :
* /etc/profile
* /etc/profile.d/*
* /etc/environment
* /etc/bash.bashrc

Côté utilisateur :
* ~/.bash_profile
* ~/.bashrc
* ~/.profile
* ~/.pam_environment

Je cherche à définir cette variable de manière globale, c'est à dire pour le 
système et donc, pour tous les utilisateurs du système. Dehors donc les ~/.* .

Si j'ai bien compris :

- lorsque le processus 1 démarre, il regarde dans /etc/profile qui lui dit de 
regarder aussi les /etc/profile.d/*
- lorsque lightdm démarre, il regarde à nouveau dans /etc/profile (et donc 
aussi dans /etc/profile.d/*) puis dans /etc/environment

J'ai donc mis :
 MA_VARIABLE=ma_valeur.
 export MA_VARIABLE
dans /etc/profile

À partir de là, si je redémarre, et que j'arrive sous MATE, j'ai ces 2 choses :
 - avec le ALT-CTRL-F1 (c'est TTY1 ça, il me semble), alors "env |grep 
"MA_VARIABLE" me montre bien que ma variable est propagée ici. Pas de soucis.
 - si je lance un mate-terminal depuis MATE, le même "env |grep "MA_VARIABLE" 
ne me retourne rien.
Je trouve ça étrange puisque de mon point de vue, les définitions dans 
/etc/profile devraient s'appliquer partout.
Ceci dit, j'ai lu sur les différentes doc que ça n'est pas aussi simple.

Du coup, j'ai essayé de placer MA_VARIABLE dans /etc/environment puisque en 
censé lightdm lit ce fichier [4].
Marche pas non plus, même cas qu'au dessus.

Puis j'ai placé dans /etc/bash.bashrc :
 MA_VARIABLE=ma_valeur.
 export MA_VARIABLE
Et là, ça fonctionne.

Vu que les fichiers dans /etc/ sont utilisés pour tous les utilisateurs, je 
pense être arrivé à peu près à ce que je voulais. (Ceci dit, ça ne me semble 
pas très propre.)

Cependant, j'aimerai comprendre :
* pourquoi ça ne fonctionne pas simplement en mettant ma variable dans 
/etc/profile ?
  Pour ça, j'imagine que la réponse est "lightdm ne regarde pas dans 
/etc/profile" mais je ne l'ai pas lu sur la toile. Une confirmation serait 
chouette.
* pourquoi ça ne fonctionne pas simplement en mettant ma variable dans 
/etc/environment ?
  Ça, j'ai l'impression que c'est sensé fonctionner si j'en crois [4].


Si j'ai bien compris la gestion des variables, elles sont héritées de 
processus-parent en processus-enfant. Et si je suis juste dans ma 
compréhension, le démarrage (à partir d'init) se passe ainsi :

1a) init démarre et lance ce qui se trouve dans init.d - à ce stade, aucun 
environnement général n'est défini et les variables sont définies "en interne" 
par chaque script présent dans /etc/init.d/*
1b) puis init démarre le login text qui regarde dans /etc/passwd quel shell 
utiliser
1c) init lance le shell (dans mon cas, bash) et lit les fichiers de 
configuration suivants :
  * /etc/profile (définition globale)
  * ~/.bash_profile , ~/.bash_login et ~/.profile (définition par utilisateur, 
donc pas intéressant dans mon cas)

Ceci fait en sorte que les variables sont bien propagées dans mes TTY (en root 
et en utilisateur)

2a) init démarre lightdm qui est censé lire /etc/environment (configuration 
multi-user - donc, ça "aurait dû fonctionner" lorsque j'ai essayé de déclarer 
ma variable ici)
2b) lightdm démarre MATE (qui devrait donc aurait dû hériter de ce qu'il y 
avait dans /etc/environment )
2c) sous MATE, je démarre mate-terminal qui aurait dû hériter de MATE, donc de 
lightdm, et donc in fine, de /etc/environment

Il doit forcément y avoir quelque chose de faux dans mon raisonnement mais j'ai 
beau tourné et retourné les docs, je ne vois pas. Vos lumières seront 
appréciées ici.


Il me reste un deuxième point d'interrogation : MA_VARIABLE est bien propagée 
dans mes TTY et dans mes mate-terminal grâce aux configurations de /etc/profile 
et /etc/bash.bashrc . Ceci dit, il y a une petite voix qui me dit que, si 
mate-terminal n'a pas hérité automatiquement de MA_VARIABLE par son ascendance, 
et qu'il m'a fallu coller une deuxième fois cette variable dans le 
/etc/bash.bashrc , alors certainement que mon environnement MATE tout entier 
n'a pas hérité de cette variable et ne la connaît donc pas, ce qui m'embête car 
je cherche à définir cette variable de manière globale. Ceci étant, je suis 
bien nu su cette question car je ne sais pas comment vérifier si mon 
environnement de bureau (MATE) connaît cette variable ou pas. La logique où 
j'en suis arrivé me dit que non.

Merci d'avance pour vos lumières,
Olivier

PS : J'ai bien vu qu'il devait y avoir une possibilité de scripter quelque 
chose grâce aux /etc/lightdm/lightdm.conf et autres fichiers de conf de 
lightdm. Je regarderai certainement plus avant ces possibilités dans les jours 
qui viennent, mais j'aimerai vraiment comprendre pourquoi ça ne fonctionne pas 
avec /etc/environment. Serait-ce parce que lightdm serait lancé en root et donc 
la lecture de /etc/environment ne concernerait que root et pas les users ? Je 
n'ai rien lu de tel, mais ça pourrait expliquer cette situation.

Certaines documentations lues :
[1] https://wiki.debian.org/EnvironmentVariables
[2] https://help.ubuntu.com/community/EnvironmentVariables
[3] http://www.freedesktop.org/wiki/Software/LightDM/
[4] http://www.freedesktop.org/wiki/Software/LightDM/Design/

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers [email protected]
En cas de soucis, contactez EN ANGLAIS [email protected]
Archive: 
https://lists.debian.org/1864437375.972838990.1429129463805.javamail.r...@zimbra61-e11.priv.proxad.net

Répondre à