Comment puis-je définir des variables d'environnement pour une connexion graphique sous Linux?

15

Je cherche un moyen de définir des variables d'environnement arbitraires pour ma connexion graphique sur linux. Je ne parle pas de démarrer un terminal et d'exporter des variables d'environnement dans le terminal, car ces variables n'existent que dans ce terminal. Je veux savoir comment définir une variable d'environnement qui s'appliquera à tous les programmes démarrés dans ma session graphique.

En d'autres termes, quel est l'équivalent de Xorg ~/.bash_login?

Ryan C. Thompson
la source

Réponses:

10

Vous pouvez toujours les insérer .profile, ils doivent donc demander une connexion.

Des problèmes surviennent cependant, s'il .bash_loginexiste: Dans ce cas, bash ne lira pas .profile.

Si vous souhaitez que vos variables de .profiles'appliquent à la fois à bash et à d'autres connexions, n'utilisez pas .bash_login! Mettez .bashrcplutôt des variables spécifiques à bash .

Ou bien, incluez .profilede.bash_login

Chris Lercher
la source
Merci, .profiletravaillé.
Ryan C. Thompson
1
De plus, .profile est vraiment sympa car je peux y mettre n'importe quel code bash que je veux. Je peux donc ajouter des variables d'environnement existantes et faire entièrement d'autres choses.
Ryan C. Thompson
1
Il semble que pour KDE, vous devez mettre cela ~/.kde/env/et y mettre fin .sh. Voir la startkdepage de manuel.
Ryan C. Thompson,
2
En fait, cela semble un peu plus compliqué. Cela dépend de la distribution de vos choix, de l'environnement de bureau et même de votre shell de connexion. Pour Gnome sur Ubuntu 10.04, vous devez mettre votre script de configuration ~/.gnomerc, comme indiqué dans /etc/X11/Xsession.d/55gnome-session_gnomerc.KDE lit le script de profil pour quel shell soit votre shell de connexion. Si SHELL=bash, il lit ~/.profile. Si SHELL=zsh, il lit ~/.zprofile. Je ne sais pas ce que ça fait pour les autres obus.
Ryan C. Thompson
4

Mon .profilefait plus que simplement définir des variables d'environnement, j'ai donc divisé les tâches de configuration de l'environnement dans un .setenvfichier qui ne définit que l'environnement. Pour le faire définir l'environnement pour X11 sur Debian, j'ai ajouté un .xsessionrcdans ma maison avec:

. ~/.setenv

Le fichier .xsessionrcà l'origine de la source est /etc/X11/Xsession.d/40x11-common_xsessionrc.

Utiliser les fichiers que bash utilise pour définir son environnement n'a pas fait ce que je voulais. Bien sûr, si je commençais un shell bash dans X11, j'obtiendrais l'environnement que je voulais. Cependant, je dois avoir mon PATH défini pour que mon environnement de bureau exécute le logiciel que je veux. Par exemple, j'utilise souvent des versions personnalisées de Firefox, installées en dehors des chemins habituels. Je veux que mon environnement de bureau démarre la bonne version plutôt que d'utiliser tout ce qu'il peut trouver sur les chemins par défaut. Pour ce faire, PATH doit être défini avant le démarrage de l'environnement de bureau.

Louis
la source
0

Xorg lui-même n'en a pas, car il ne démarre pas vos programmes - ce serait le gestionnaire d'affichage (gdm, xdm, xinit, startx, etc.) ou le gestionnaire de session (gnome-session, KDE, etc.) que vous utilisez , car ce sont les parents de vos processus de session de bureau. Malheureusement, il existe une variété de ceux-ci, chacun avec différents scripts de démarrage / fichiers dot, il n'y a donc pas de réponse unique. (Sous le modèle client / serveur de X, le serveur X peut même ne pas être sur la même machine que les clients, et il s'exécute souvent en tant que root au lieu de vous, donc c'est le mauvais endroit pour des paramètres comme les variables d'environnement.)

alanc
la source
Je sais que Xorg lui-même n'est pas ce que je veux regarder. Je veux juste savoir comment définir mes variables d'environnement dans ma session X.
Ryan C. Thompson