ENVIRONMENT.D(5) environment.d ENVIRONMENT.D(5)

environment.d - Definition einer Benutzerdiensteumgebung

ÜBERSICHT

~/.config/environment.d/*.conf

/etc/environment.d/*.conf

/run/environment.d/*.conf

/usr/lib/environment.d/*.conf

/etc/environment

Konfigurationsdateien in den environment.d-Verzeichnissen enthalten Listen von Umgebungsvariablenzuweisungen, die an Dienste, die durch die Systembenutzerinstanz gestartet werden, weitergegeben werden. systemd-environment-d-generator(8) wertet sie aus und aktualisiert die von der Systemd-Benutzerinstanz exportierte Umgebung. Lesen Sie die nachfolgende Diskussion darüber, welche Prozesse diese Variablen erben.

Es wird empfohlen, alle Namen mit Ziffern zu beginnen, um die Sortierung zu vereinfachen.

Zur Rückwärtskompatibilität wird ein Symlink auf /etc/environment installiert, so dass diese Datei auch ausgewertet wird.

Konfigurationsdateien werden aus Verzeichnissen in /etc/, /run/, /usr/local/lib/ und /usr/lib/, in dieser Rangfolge, gelesen, wie im Abschnitt ÜBERSICHT oben aufgeführt. Dateien müssen die Endung ».conf« haben. Dateien in /etc/ setzen Dateien mit dem gleichen Namen in /run/, /usr/local/lib/ und /usr/lib/ außer Kraft. Dateien in /run/ setzen Dateien mit dem gleichen Namen unter /usr/lib/ außer Kraft.

Alle Konfigurationsdateien werden in lexikographischer Reihenfolge sortiert, unabhängig davon, in welchem Verzeichnis sie sich befinden. Falls mehrere Dateien die gleiche Option angeben, wird der Eintrag in der Datei mit dem lexikographisch letzten Namen Vorrang erhalten. Daher kann die Konfiguration in einer bestimmten Datei entweder komplett ersetzt werden (indem eine Datei mit dem gleichen Namen in einem Verzeichnis mit höherer Priorität abgelegt wird) oder einzelne Einstellungen können geändert werden (indem zusätzliche Einstellungen in einer Datei mit einem anderen Namen, der später angeordnet ist, angegeben werden).

Pakete sollten ihre Konfigurationsdateien in /usr/lib/ (Distributionspakete) oder /usr/local/lib/ (lokale Installationen) installieren. Dateien in /etc/ sind für den lokalen Administrator reserviert, der diese Logik verwenden kann, um die durch die Lieferantenpakete bereitgestellten Konfigurationsdateien außer Kraft zu setzen. Es wird empfohlen, allen Dateinamen eine zweistellige Zahl und einen Bindestrich voranzustellen, um die Sortierung der Dateien zu vereinfachen.

Falls der Administrator eine vom Lieferanten bereitgestellte Konfigurationsdatei deaktivieren möchte, wird empfohlen, einen Symlink im Konfigurationsverzeichnis in /etc/ mit dem gleichen Dateinamen wie die des Lieferanten auf /dev/null zu setzen. Falls die Lieferantendatei im Initrd-Image enthalten ist, muss das Image neu erstellt werden.

Die Konfigurationsdateien enthalten eine Liste von »SCHLÜSSEL=Wert«-Umgebungsvariablenzuweisungen, getrennt durch Zeilenumbrüche. Die rechte Seite dieser Zuweisungen kann vorher definierte Umgebungsvariablen referenzieren, indem das Format »${ANDERER_SCHLÜSSEL}« und »$ANDERER_SCHLÜSSEL« verwandt wird. Es ist auch möglich, »${FOO:-VORGABEWERT}« zu verwenden, um auf die gleiche Art wie »${FOO}« zu expandieren, außer die Expandierung wäre leer, in welchem Fall sie auf VORGABEWERT expandiert wird; und »${FOO:+ALTERNATIVWERT}« zu verwenden, um auf ALTERNATIVWERT zu expandieren, falls ${FOO}« sich auf einen nicht leeren Wert expandiert hätte. Weiter Elemente der Shell-Syntax werden nicht unterstützt.

Jeder SCHLÜSSEL muss ein gültiger Variablenname sein. Leere Zeilen und Zeilen, die mit dem Kommentarzeichen »#« beginnen, werden ignoriert.

Beispiel 1. Einrichten einer Umgebung, um Zugriff auf ein unter /opt/foo installiertes Programm zu geben

/etc/environment.d/60-foo.conf:

        FOO_DEBUG=force-software-gl,log-verbose
        PATH=/opt/foo/bin:$PATH
        LD_LIBRARY_PATH=/opt/foo/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
        XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}

Die durch die Benutzerdiensteverwalterinstanz (Instanz systemd --user, gestartet in dem Systemdienst user@UID.service) exportierten Umgebungsvariablen werden an alle Dienste, die durch diesen Verwalter gestartet werden, weitergegeben. Dies betrifft insbesondere Dienste, die in Shells ausgeführt werden. Beispielsweise läuft in der GNOME-Umgebung der graphische Terminal-Emulator als Benutzer-Unit gnome-terminal-server.service, die wiederum die Benutzer-Shell ausführt, so dass die Shell die durch den Benutzerverwalter exportierten Umgebungsvariablen erben wird. Für andere Instanzen der Shell, die nicht vom Benutzerdiensteverwalter gestartet werden, wird die geerbte Umgebung durch das Programm definiert, das sie startete. Tipp: Im Allgemeinen enthalten systemd.service(5)-Units die durch Systemd gestarteten Programme und systemd.scope(5)-Units enthalten Programme, die von etwas anderem gestartet wurden.

Beachten Sie, dass diese Dateien nicht den Umgebungsblock des Diensteverwalters selbst betreffen, sondern ausschließlich die Umgebungsblöcke, die an die Dienste, die von ihm verwaltet werden, übergeben werden. Auf diese Weise gesetzt Umgebungsvariablen können daher nicht das Verhalten des Diensteverwalters beeinflussen. Um Änderungen am Umgebungsblock des Diensteverwalters vorzunehmen, muss die Umgebung verändert werden, bevor der Benutzerdiensteverwalter aufgerufen wird, beispielsweise vom Systemdiensteverwalter oder mittels eines PAM-Moduls.

Insbesondere für SSH-Anmeldungen baut der Dienst sshd(8) eine Umgebung auf, die eine Kombination aus Variablen sind, die von dem fernen System weitergeleitet und solchen, die durch sshd definiert wurden; siehe die Diskussion in ssh(1). Eine graphische Display-Sitzung wird über analoge Mechanismen zur Definition der Umgebung verfügen. Beachten Sie, dass einige Verwalter die Systemd-Benutzer-Instanz bezüglich der exportierten Umgebung mittels systemctl show-environment oder dem zugrundeliegenden D-Bus-Aufruf abfragen und diese Konfiguration in Programme einleiten, die sie starten.

systemd(1), systemd-environment-d-generator(8), systemd.environment-generator(7)

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.

systemd 255