Festlegen einer Umgebungsvariablen pro Benutzer-Shell unabhängig

Festlegen einer Umgebungsvariablen pro Benutzer-Shell unabhängig

Wie kann ich pro Benutzer eine permanente Umgebungsvariable unabhängig von der verwendeten Shell ( bash, zshund fish) setzen?

Antwort1

EDIT: lautWas ist die beste Distributions-/Shell-unabhängige Methode zum Festlegen von Umgebungsvariablen?Die beste Lösung hierfür ist~/.pam_environment

BEARBEITEN: bin zur Hack-Lösung zurückgekehrt, da ~/.profilees nicht von allen Shells gelesen wird:

Quelle aller Shells /etc/profile.

Das bedeutet /etc/profile, dass Sie in eine Zeile wie diese einfügen könnten

. $HOME/.custom-profile

~/.custom-profileDann könnten Sie Ihre Variablen für jeden Benutzer hinzufügen

Antwort2

Alle Shells lesen unterschiedliche Profildateien für jeden Benutzer (zsh: ~/.profile, bash: ~/.bash_profile, csh hat nur eine RC-Datei usw.). Sie müssten also alle diese potenziellen Kandidaten ändern.

Die meisten Shells greifen jedoch zumindest auf das Lesen von ~/.profile zurück (danke @terdon für den Hinweis!), sodass Sie Ihre Exporte dort ablegen können.

Da das „Anmelden“ normalerweise von einem Prozess durchgeführt wird, der seine UID und GID ändern kann (normalerweise ein als Root ausgeführter Anmeldemanager), liegt es an diesen Programmen, die Umgebung für das gestartete Programm zu definieren (z. B. eine Shell).

Aber: Es gibt mehr als einen Login-Manager (Ihren GDM/lightdm/KDM/... visuellen Login-Manager, getty, logind/loginct, ssh, getty...), und sie lesen die Konfiguration aus unterschiedlichen Dateien, sodass es auch hier keine einheitliche Möglichkeit gibt.

verwandte Informationen