Pam_env moduł PAM pozwala ci je ustawić albo w /etc/environment
lub w ~/.pam_environment
zależności od tego, czy chcesz go dla wszystkich użytkowników systemu (Wide), lub tylko użytkownik (session-wide).
Zmienne środowiskowe dla całego systemu
Ustawienia zmiennych środowiskowych, które wpływają na system jako całość (a nie tylko na konkretnego użytkownika), nie powinny być umieszczane w żadnym z wielu skryptów na poziomie systemu, które są wykonywane po załadowaniu systemu lub sesji pulpitu, ale w
/etc/environment
- Ten plik jest przeznaczony specjalnie dla systemowych ustawień zmiennych środowiskowych. To nie jest plik skryptu, ale raczej składa się z wyrażeń przypisania, po jednym w wierszu. W szczególności plik ten przechowuje ustawienia regionalne i ustawienia ścieżki w całym systemie.
Zmienne środowiskowe dla całej sesji
Ustawienia zmiennych środowiskowych, które powinny mieć wpływ tylko na konkretnego użytkownika (a nie na system jako całość), należy ustawić na:
~/.pam_environment
- Ten plik jest przeznaczony do ustawiania środowiska użytkownika. To nie jest plik skryptu, ale raczej składa się z wyrażeń przypisania, po jednym w wierszu.
Uwaga: Korzystanie .pam_environment
wymaga ponownego logowania w celu zainicjowania zmiennych. Ponowne uruchomienie tylko terminala nie jest wystarczające, aby móc korzystać ze zmiennych.
Zobacz więcej na wiki Ubuntu na temat zmiennych środowiskowych .
~/.pam_environment
rozwiązaniem polega na tym, że moduł pam_env domyślnie go nie czyta, chyba że dystrybucja skonfiguruje go inaczej. Na Fedorze 20 nie jest na przykład czytany.~/.xsession
załaduje zmienne środowiskowe dla aplikacji X. Zobacz unix.stackexchange.com/questions/47359/what-is-xsession-foruser_envfile=filename
. Mój problem z pam_env polega na tym, że zmienna HOME może nie być dostępna w zależności od aplikacji PAM. Co ogranicza jego użycie do zmiennych bezwzględnych./etc/X11/Xsession.d/
... lub wzdłuż tego katalogu, w zależności od twojego Linuxa (?). Tutaj trochę o tym napisałem .Chodzi o to, że po zalogowaniu menedżer wyświetlania uruchamia „Xsession” i pobiera (!) Wszystko z tego katalogu w kolejności alfabetycznej. Możesz po prostu dodać skrypt, który modyfikuje ŚCIEŻKĘ. Xsession będzie ostatecznie Twoim DE i zwykle wszystkie procesy są potomkami tego Xsession, dlatego dziedziczą środowisko PATH.
źródło
/etc/X11/Xsession.d/40x11-common_xsessionrc
Źródło globalnych zmiennych środowiskowych. Ten skrypt będzie pobierał wszystko z $ HOME / .xsessionrc, jeśli plik jest obecny. Dzięki temu użytkownik może ustawić globalne zmienne środowiskowe dla swojej sesji X, takie jak informacje o ustawieniach regionalnych.Proces dziedziczy środowisko po procesie nadrzędnym, który go uruchamia. Aby zmienić PATH lub inne wartości środowiska w obiekcie potomnym, możemy ustawić zmienną na wartość w obiekcie nadrzędnym i wyeksportować zmienną, jeśli jesteśmy w powłoce, a następnie uruchomić proces potomny. Dziecko może również odczytać jeden lub więcej plików inicjujących, aby zmienić swoje środowisko podczas uruchamiania.
Tak więc są jeszcze dwa pytania, aby uzyskać odpowiedź:
Co to jest drzewo dziedziczenia nadrzędny / podrzędny, które prowadzi do procesu, na który PATH lub zmiana środowiska ma mieć wpływ?
Jakie pliki inicjujące są używane / odczytywane / pozyskiwane przez odpowiednie procesy w tym drzewie?
Oto część wyniku ps (1), aby pokazać, co rozumiem przez drzewo dziedziczenia:
Zwróć uwagę na sekwencje graficzne \ _ i numery PIP / PPID (identyfikator procesu i macierzysty identyfikator PID). PID 1855 został uruchomiony przez (jakieś dziecko z?) 1497, który został uruchomiony przez 1481, który został uruchomiony przez PID 1, który został uruchomiony przez proces przodka 0.
Wykonaj podobne śledzenie dziedziczenia dla procesu, na który chcesz wpłynąć, dowiedz się, które pliki inicjujące są istotne i dokonaj zmiany na PATH gdzieś w tym drzewie, prawdopodobnie z czymś podobnym do:
źródło
ps
do ustalenia nadrzędnego procesu logowania do GUI?