Umgebungsvariablen auf Linux-ähnlichen Systemen

Umgebungsvariablen auf Linux-ähnlichen Systemen

Wie kann man Umgebungsvariablen für einen Benutzer möglichst allgemein festlegen, und zwar unabhängig von Shell-Umgebungsvariablen (wie Profil für Bourne-ähnliche Shells, bahsrc, zshrc, zshenv, …)? Die Idee besteht darin, Umgebungsvariablen für einen Benutzer während der Benutzeranmeldung festzulegen und sie für jeden Prozess (nicht nur vom Shell-Prozess, sondern auch von jedem anderen Prozess erzeugt) verfügbar (gegabelt) zu machen, einschließlich jeder Art von Shell?

Antwort1

Diese Ubuntu-Dokumentationredet über ~/.pam_environment:

Sitzungsweite Umgebungsvariablen

Geeignete Dateien für Umgebungsvariableneinstellungen, die nur einen bestimmten Benutzer (und nicht das gesamte System) betreffen sollen, sind ~/.pam_environmentund ~/.profile. Nachdem Sie eine dieser Dateien bearbeitet haben, sollten SieErneut anmeldenum die Variablen zu initialisieren.

~/.pam_environment

Diese Datei ist speziell zum Einstellen der Umgebung eines Benutzers gedacht. Es handelt sich nicht um eine Skriptdatei, sondern sie besteht aus Zuweisungsausdrücken, einem pro Zeile. Dieses Beispiel setzt die Variable FOO auf eine Literalzeichenfolge und ändert die Variable PATH:

FOO=bar
PATH DEFAULT=${PATH}:${HOME}/MyPrograms

Notiz:

  1. Bei einer einfachen Variablenzuweisung wie im FOO=barBeispiel dürfen Sie den Wert nicht in Anführungszeichen setzen.

  2. Damit die Variablenerweiterung funktioniert, ist die zum Ändern von PATH verwendete Syntax erforderlich, die sich von der in Skriptdateien unterscheidet.

  3. ~/.pam_environment wird geschrieben, wenn Sie verschiedene GUIs verwenden, um die Sprache oder die regionalen Formate einzustellen. Wenn Sie also beispielsweise LC_TIME manuell einstellen ~/.pam_environment, wird Ihr Eintrag überschrieben, wenn Sie anschließend die GUI für die Sprachunterstützung verwenden, um die Einstellung für die regionalen Formate zu ändern.

Diese Datei sowie /etc/environmentscheinen zu konsultieren vonpam_env.sowas meiner Meinung nach als Teil des Anmeldevorgangs geschehen würde und von jeder Shell getrennt wäre.

verwandte Informationen