Używam zsh i gdm do uruchamiania gnome. Jakiś czas temu odkryłem, że zmienne nie są ustawione poprawnie. Na przykład LANG / LC_ALL są niepoprawne ( ""
zamiast en_GB.UTF-8
).
Podzieliłem .zshrc
na .zshrc
i .profile
. W tym ostatnim ustawiam zmienne środowiskowe, ale jak mogę ustawić zmienne przed rozpoczęciem sesji? Próbowałem kilku opcji ( .xinitrc
, .xsessionrc
), ale żadna nie wydawała się działać.
Edytuj Aby wyjaśnić - użyłem .profile
i ręcznie pozyskałem go .zshrc
. To i tak nie zmienia pytania.
gnome
desktop-environment
gentoo
gdm
environment-variables
Maciej Piechotka
źródło
źródło
.profile
w ogóle nie jesteś załadowany, czy też coś innego nadpisuje zmienne regionalne? (Spróbuj ustawić jakąś inną zmienną, jakexport MACIEJ_PROFILE=yes
się upewnić.set -x
W.profile
może być dobrym sposobem, aby sprawdzić, co jest wykonywane i po.profile
, czy to w ogóle czytać.) Nie ma sensu w zaopatrywaniu.profile
od.zshrc
.ssh localhost zsh
? Cossh localhost bash
? Jeśli bash jest w porządku, ale nie zsh, być może włożyłeś coś/etc/zshenv
lub~/.zshenv
(co jest prawie zawsze złym pomysłem).gnome-session
że nie ma tej zmiennej.Odpowiedzi:
Prostym sposobem jest wynalezienie wehikułu czasu, odwiedzanie różnych osób, które opracowały pliki startowe powłoki i powiedzenie im, aby wyraźnie rozróżniały trzy rzeczy:
startx
;Nie jest trudno uzyskać sesję vs. powłokę w sposób przenośny: inicjalizacja czasu logowania przechodzi w
.profile
(lub.zprofile
, lub.login
), inicjalizacja powłoki wchodzi w.bashrc
lub.zshrc
. Wcześniej pisałem o.bash_profile
, zsh vs. inne powłoki , więcej o przenośności (głównie o bash) , więcej o tym, kto czyta.profile
.Pozostającym problemem jest rozróżnienie między konfiguracją sesji a uruchomieniem sesji. W większości przypadków
~/.profile
jest wykonywany podczas logowania i może podwoić się jako jedno i drugie, ale są wyjątki:~/.login
i~/.zprofile
jest pozyskiwana zamiast~/.profile
. Ditto dla bash i~/.bash_profile
, ale to łatwo rozwiązać poprzez pozyskiwanie~/.profile
od~/.bash_profile
.~/.profile
odczyt zostanie odczytany, zależy od wersji programu, twojej dystrybucji (Linux lub innej) oraz od wybranego rodzaju sesji..profile
musisz ustawić zmienne środowiskowe, ale nie rozpocząć sesji (np. Menedżer okien).~/.xsession
zarówno konfiguracja sesji, jak i uruchamianie sesji. Tak więc plik może być zasadniczo. ~/.xsession; . ~/.xinitrc
. Niektóre dystrybucje źródłowe~/.profile
wcześniej~/.xsession
. Współczesne dystrybucje pochodzą tylko~/.xsession
wtedy, gdy wybierzesz „niestandardową” sesję z menedżera wyświetlania, a taka sesja nie zawsze jest dostępna.Podsumowując,
~/.profile
jest właściwym miejscem dla zmiennych środowiskowych. Jeśli nie jest czytany, spróbuj go pobrać~/.xsession
(i uruchomić stamtąd programy X) lub poszukaj metody specyficznej dla systemu (która może zależeć od twojej dystrybucji, ewentualnego menedżera wyświetlania, typu sesji, jeśli menedżer wyświetlania, i środowiska pulpitu lub menedżer sesji).źródło
.xsession
był plik, którego szukałem..profile
źródła.bashrc
lub podobne, możesz niezawodnie ustawić zmienne środowiskowe.bashrc
dla nie tylko sesji logowania, ale dla nowych powłok, które wymagają różnych ustawień, np. Jeśli zaczynaszxterm
odgnome-terminal
i chcesz inaczejdircolors
..bashrc
one poprzednie ustawienia. Na przykład, jeśli uruchomiłeś instancję Screen lub Tmux z określonymi zmiennymi środowiskowymi, wszystko, co ustawisz.bashrc
, zastąpi te ustawienia.LS_COLORS
jest szczególnym przypadkiem, ponieważ tak naprawdę jest to ustawienie na terminal; idealnie powinien być ustawiony przez emulator terminala, a ustawienie go w pliku rc powłoki jest najlepszym rozwiązaniem.W dokumentacji Gentoo znajduje się artykuł Przewodnik po lokalizacji systemu Linux w Gentoo . Rozdział 3 dotyczy ustawiania ustawień regionalnych.
W moim Gentoo
LANG
jest ustawiony w tym pliku i wszystko działa poprawnie ...źródło
.bashrc
, która jest niepoprawna (zobacz moją odpowiedź, aw szczególności superuser.com/questions/217431 ).env.d
są bardziej uniwersalne.