Mit dem PAM-Modul pam_env können Sie sie entweder in /etc/environment
oder in festlegen ~/.pam_environment
, je nachdem, ob Sie sie für alle Benutzer (systemweit) oder nur für Ihren Benutzer (sitzungsweit) möchten.
Systemweite Umgebungsvariablen
Einstellungen für Umgebungsvariablen, die sich auf das gesamte System (und nicht nur auf einen bestimmten Benutzer) auswirken, sollten nicht in einem der vielen Skripts auf Systemebene abgelegt werden, die ausgeführt werden, wenn das System oder die Desktopsitzung geladen werden, sondern in
/etc/environment
- Diese Datei ist speziell für systemweite Einstellungen von Umgebungsvariablen gedacht. Es ist keine Skriptdatei, sondern besteht aus Zuweisungsausdrücken, einer pro Zeile. Insbesondere werden in dieser Datei die systemweiten Einstellungen für das Gebietsschema und den Pfad gespeichert.
Sitzungsweite Umgebungsvariablen
Einstellungen für Umgebungsvariablen, die nur einen bestimmten Benutzer (und nicht das gesamte System) betreffen sollen, sollten wie folgt festgelegt werden:
~/.pam_environment
- Diese Datei ist speziell zum Festlegen der Benutzerumgebung vorgesehen. Es ist keine Skriptdatei, sondern besteht aus Zuweisungsausdrücken, einer pro Zeile.
Hinweis: Für die Verwendung ist .pam_environment
eine erneute Anmeldung erforderlich, um die Variablen zu initialisieren. Ein Neustart nur des Terminals reicht nicht aus, um die Variablen verwenden zu können.
Weitere Informationen finden Sie im Ubuntu-Wiki zu Umgebungsvariablen .
~/.pam_environment
Lösung ist, dass das Modul pam_env es standardmäßig nicht liest, es sei denn, die Distribution konfiguriert es anders. Auf Fedora 20 wird es beispielsweise nicht gelesen.~/.xsession
Lädt Umgebungsvariablen für X-Anwendungen. Siehe unix.stackexchange.com/questions/47359/what-is-xsession-foruser_envfile=filename
. Mein Problem mit pam_env ist, dass die Variable HOME je nach PAM-Anwendung möglicherweise nicht verfügbar ist. Dies beschränkt die Verwendung auf absolute Variablen./etc/X11/Xsession.d/
... oder nach dem Vorbild dieses Verzeichnisses, abhängig von Ihrem Linux (?). Ich habe hier ein wenig darüber geschrieben .Das Konzept ist, dass ein Display Manager nach dem Login eine "Xsession" startet und (!) Alles in diesem Verzeichnis in alphabetischer Reihenfolge erzeugt. Sie können einfach ein Skript hinzufügen, das PATH ändert. Die Xsession ist in der Regel Ihre DE und alle Prozesse sind untergeordnete Elemente dieser Xsession, sodass die PATH-Umgebung übernommen wird.
quelle
/etc/X11/Xsession.d/40x11-common_xsessionrc
Globale Umgebungsvariablen als Quelle. Dieses Skript gibt alles in $ HOME / .xsessionrc aus, wenn die Datei vorhanden ist. Auf diese Weise kann der Benutzer globale Umgebungsvariablen für seine X-Sitzung festlegen, z. B. Gebietsschemainformationen.Ein Prozess erbt eine Umgebung von dem übergeordneten Prozess, der ihn startet. Um den PATH-Wert oder andere Umgebungswerte in einem untergeordneten Element zu ändern, können wir eine Variable auf einen Wert im übergeordneten Element festlegen und die Variable exportieren, wenn wir uns in einer Shell befinden, und dann den untergeordneten Prozess starten. Das Kind kann auch eine oder mehrere Initialisierungsdateien lesen, um beim Start seine eigene Umgebung zu ändern.
Es gibt also noch zwei weitere Fragen, um eine Antwort zu erhalten:
Was ist der übergeordnete / untergeordnete Vererbungsbaum, der zu dem Prozess führt, der von der PATH- oder Umgebungsänderung betroffen sein soll?
Welche Initialisierungsdateien werden von den relevanten Prozessen in diesem Baum verwendet / gelesen / bezogen?
Hier ist ein Teil der Ausgabe von ps (1), um zu zeigen, was ich mit einem Vererbungsbaum meine:
Notieren Sie die Grafiksequenzen und die PIP / PPID-Nummern (Prozess-ID und übergeordnete PID). Die PID 1855 wurde von (einem Kind von?) 1497 gestartet, die von 1481 gestartet wurde, die von der PID 1 gestartet wurde, die vom Vorfahrenprozess 0 gestartet wurde.
Führen Sie eine ähnliche Vererbungsablaufverfolgung für den Prozess durch, den Sie beeinflussen möchten, finden Sie heraus, welche Initialisierungsdateien relevant sind, und nehmen Sie die Änderung in PATH irgendwo in dieser Struktur vor, wahrscheinlich mit etwas Ähnlichem wie:
quelle
ps
den übergeordneten Prozess einer GUI-Anmeldung bestimmen?