Jak ustawić zmienne środowiskowe dla graficznego logowania w systemie Linux?

15

Szukam sposobu na ustawienie dowolnych zmiennych środowiskowych dla mojego graficznego logowania w systemie Linux. Nie mówię o uruchomieniu terminala i eksportowaniu zmiennych środowiskowych w terminalu, ponieważ zmienne te istnieją tylko w tym jednym terminalu. Chcę wiedzieć, jak ustawić zmienną środowiskową, która będzie stosowana do wszystkich programów uruchomionych w mojej sesji graficznej.

Innymi słowy, jaki jest odpowiednik Xorga ~/.bash_login?

Ryan C. Thompson
źródło

Odpowiedzi:

10

Zawsze możesz je umieścić .profile, więc powinny ubiegać się o każde logowanie.

Problemy występują jednak, jeśli .bash_loginistnieje: W takim przypadku bash nie będzie czytał .profile.

Jeśli chcesz, aby twoje zmienne były .profilestosowane zarówno w bash, jak i przy innych logowaniach, nie używaj .bash_login! .bashrcZamiast tego wstaw zmienne specyficzne dla bash .

Lub alternatywnie, dołącz .profileod.bash_login

Chris Lercher
źródło
Dzięki, .profilepracowałem.
Ryan C. Thompson,
1
Ponadto .profile jest naprawdę fajny, ponieważ mogę w nim umieścić dowolny kod bash, jaki chcę. Więc nie mogę dodawać do istniejących zmiennych środowiskowych i robić całkowicie inne rzeczy.
Ryan C. Thompson
1
Wygląda na to, że w KDE musisz to włączyć ~/.kde/env/i zakończyć .sh. Zobacz stronę startkdepodręcznika.
Ryan C. Thompson,
2
W rzeczywistości wydaje się to nieco bardziej skomplikowane. Zależy to od wyboru opcji, środowiska pulpitu, a nawet powłoki logowania. W przypadku Gnome na Ubuntu 10.04 musisz umieścić skrypt instalacyjny ~/.gnomerc, jak pokazano w /etc/X11/Xsession.d/55gnome-session_gnomerc.KDE czyta skrypt profilu dla powłoki, która jest powłoką logowania. Jeśli SHELL=bash, to czyta ~/.profile. Jeśli SHELL=zsh, to czyta ~/.zprofile. Nie wiem, co robi z innymi pociskami.
Ryan C. Thompson
4

My .profilenie tylko ustawia zmienne środowiskowe, więc podzieliłem zadania związane z ustawieniami środowiska na .setenvplik, który tylko ustawia środowisko. Aby ustawić środowisko dla X11 na Debianie, dodałem .xsessionrcw moim domu:

. ~/.setenv

Plik, który powoduje .xsessionrcpozyskiwanie, to /etc/X11/Xsession.d/40x11-common_xsessionrc.

Używanie plików używanych przez bash do ustawienia środowiska nie spełniło moich oczekiwań. Jasne, gdybym uruchomił powłokę bash w X11, dostałbym środowisko, którego chciałem. Muszę jednak ustawić PATH, aby środowisko komputerowe mogło uruchamiać oprogramowanie, które chcę. Na przykład często używam niestandardowych wersji Firefoksa, instalowanych poza zwykłymi ścieżkami. Chcę, aby moje środowisko pulpitu uruchomiło odpowiednią wersję, zamiast używać wszystkiego, co może znaleźć na domyślnych ścieżkach. Aby to zrobić, PATH należy ustawić przed uruchomieniem środowiska pulpitu.

Louis
źródło
0

Sam Xorg nie ma takiego, ponieważ nie uruchamia programów - byłby to dowolny menedżer wyświetlania (gdm, xdm, xinit, startx itp.) Lub menedżer sesji (gnome-session, KDE itp.), Którego używasz , ponieważ są to rodzice procesów sesji pulpitu. Niestety istnieje wiele różnych, z których każdy ma inne skrypty startowe / pliki dot, więc nie ma jednej odpowiedzi dla wszystkich. (W modelu klient / serwer X X serwer X może nawet nie znajdować się na tym samym komputerze co klienci i często działa jako root zamiast ciebie, więc jest to złe miejsce na ustawienia takie jak zmienne środowiskowe.)

alanc
źródło
Wiem, że sam Xorg nie jest tym, na co chcę patrzeć. Chcę tylko wiedzieć, jak ustawić zmienne środowiskowe w mojej sesji X.
Ryan C. Thompson,