Traditionnellement, l'endroit pour définir des variables d'environnement par utilisateur sur les systèmes Unix est ~/.profile
. Ce fichier est lu par le shell de connexion (c'est-à-dire le programme démarré lorsque vous vous connectez et dans lequel vous pouvez taper des commandes), à condition que le shell de connexion soit un shell compatible Bourne.
Bash est un shell compatible Bourne. Lorsqu'il est invoqué en tant que shell de connexion, il lit ~/.bash_profile
si ce fichier existe et ~/.profile
s'il ~/.bash_profile
n'existe pas.
En règle générale, si vous tapez votre mot de passe en mode texte (par exemple, sur une console texte ou à distance avec ssh), le shell que vous obtenez est un shell de connexion.
Cependant, si vous tapez votre mot de passe dans un programme graphique et que vous vous connectez à un environnement graphique, cela contourne le shell de connexion normal. La .profile
lecture dans ce cas dépend de la configuration de la session graphique; par exemple, il varie entre les distributions Linux, entre les gestionnaires d'affichage et entre les environnements de bureau. Parfois, l'un des programmes de la chaîne appelle explicitement un shell de connexion; parfois l'un des programmes lit explicitement ~/.profile
; et parfois rien de tout cela ne se produit et ~/.profile
n'est pas lu.
Pour donner un exemple de la variabilité, pour autant que je sache d'un rapide coup d'œil aux scripts impliqués, sur Ubuntu 10.04: si vous vous connectez avec kdm ou lxdm, ~/.bash_profile
est lu s'il existe, et ~/.profile
sinon; si vous vous connectez avec gdm, seul ~/.profile
est lu; si vous vous connectez avec xdm, ~/.profile
n'est pas lu.
Tous les systèmes que je connais fournissent un moyen de définir des variables d'environnement par utilisateur. Malheureusement, il n'y a pas de réponse générale.
Notez que parfois vous verrez des recommandations pour définir des variables d'environnement dans ~/.bashrc
, ou démarrer un shell de connexion dans chaque terminal dans un environnement GUI. Les deux sont de mauvaises idées; l'une des raisons est le problème que vous avez rencontré, à savoir que vos variables d'environnement n'étaient disponibles que dans les programmes démarrés via un terminal, et non dans les programmes démarrés directement avec une icône ou un menu ou un raccourci clavier.