J'utilise zsh et gdm pour exécuter gnome. Il y a quelque temps, j'ai découvert que les variables n'étaient pas définies correctement. Par exemple, LANG / LC_ALL sont incorrects ( ""
au lieu de en_GB.UTF-8
).
J'ai divisé le .zshrc
en .zshrc
et .profile
. Dans ce dernier, j'ai défini les variables d'environnement, mais comment puis-je définir les variables avant le début de la session? J'ai essayé quelques choix ( .xinitrc
, .xsessionrc
) mais aucun ne semblait fonctionner.
Modifier Pour clarifier - je l'ai utilisé .profile
et sourcé manuellement.zshrc
. Cela ne change pas la question de toute façon.
gnome
desktop-environment
gentoo
gdm
environment-variables
Maciej Piechotka
la source
la source
.profile
n'est -il pas chargé du tout, ou quelque chose d'autre écrase-t-il les variables locales? (Essayez de régler d'autres variables commeexport MACIEJ_PROFILE=yes
pour se assurer.set -x
En.profile
peut être un bon moyen de vérifier ce qui est en cours d' exécution et après.profile
, si elle a lu du tout.) Il n'y a pas de point dans l' approvisionnement à.profile
partir.zshrc
.ssh localhost zsh
? Et alorsssh localhost bash
? Si bash est ok mais pas zsh, peut-être que vous mettez quelque chose dans/etc/zshenv
ou~/.zshenv
(ce qui est à peu près toujours une mauvaise idée).gnome-session
cet ensemble de variables n'est pas disponible.Réponses:
Le moyen le plus simple est d'inventer une machine à voyager dans le temps, de visiter les différentes personnes qui ont conçu les fichiers de démarrage du shell et de leur dire de bien distinguer trois choses:
startx
;Il n'est pas trop difficile d'obtenir une session vs un shell correct d'une manière portable: l'initialisation au moment de la connexion va dans
.profile
(ou.zprofile
, ou.login
), l'initialisation du shell va dans.bashrc
ou.zshrc
. Je l' ai déjà écrit au sujet.bash_profile
, zsh par rapport à d' autres coquilles , plus sur la portabilité (surtout de bash) , plus sur qui lit.profile
.Un problème restant consiste à faire la distinction entre la configuration de la session et le lancement de la session. Dans la plupart des cas, il
~/.profile
est exécuté lorsque vous vous connectez et peut doubler comme les deux, mais il existe des exceptions:~/.login
et~/.zprofile
provient de la place de~/.profile
. Idem pour bash et~/.bash_profile
, mais cela est facilement résolu en s'approvisionnant~/.profile
auprès de~/.bash_profile
.~/.profile
lecture dépend de la version du programme, de votre distribution (Linux ou autre) et du type de session que vous choisissez..profile
devez définir des variables d'environnement mais pas démarrer une session (par exemple un gestionnaire de fenêtres).~/.xsession
à la fois la configuration de la session et le lancement de la session. Le fichier peut donc être essentiellement. ~/.xsession; . ~/.xinitrc
. Certaines distributions source~/.profile
avant~/.xsession
. Les distributions modernes ne se source que~/.xsession
lorsque vous sélectionnez une session «personnalisée» dans le gestionnaire d'affichage, et une telle session n'est pas toujours disponible.En résumé,
~/.profile
c'est le bon endroit pour les variables d'environnement. S'il n'est pas lu, essayez de le rechercher~/.xsession
(et démarrez vos programmes X à partir de là), ou recherchez une méthode spécifique au système (qui peut dépendre de votre distribution, du gestionnaire d'affichage le cas échéant, du type de session si le gestionnaire d'affichage et de l'environnement de bureau ou gestionnaire de session).la source
.xsession
était le fichier que je cherchais..profile
sources.bashrc
ou similaires, vous pouvez définir des variables d'environnement de manière fiable.bashrc
non seulement pour les sessions de connexion, mais aussi pour les nouveaux shells qui nécessitent des paramètres différents, par exemple si vous démarrez unxterm
depuisgnome-terminal
et que vous voulez différentdircolors
..bashrc
, elles remplaceront vos paramètres précédents. Par exemple, si vous avez démarré une instance Screen ou Tmux avec des variables d'environnement particulières, tout ce que vous définissez.bashrc
remplacera ces paramètres.LS_COLORS
est un cas spécial car c'est vraiment un paramètre par terminal; idéalement, il devrait être défini par l'émulateur de terminal, et le définir dans un fichier shell rc est une solution de contournement.Dans la documentation Gentoo, il y a un article Gentoo Linux Localization Guide . Le chapitre 3 concerne la configuration des paramètres régionaux.
Dans mon Gentoo
LANG
est défini dans ce fichier et tout fonctionne correctement ...la source
.bashrc
, ce qui est faux (voir ma réponse et en particulier superuser.com/questions/217431 ).env.d
sont plus universels.