Was ist der Unterschied zwischen / etc / environment und / etc / profile?

25

Ich verstehe, dass Ersteres vor Letzterem geladen wird, aber was ist der konzeptionelle Unterschied? Gibt es gute Gründe, warum ich einige Variablen in einer und nicht in einer anderen setzen sollte? Mit Ausnahme der Tatsache, dass /etc/environmentanscheinend die Umgebung für alle vom System ausgeführten Prozesse eingerichtet wird, während /etc/profiledie Umgebung für die Einrichtung verwendet und von der Anmeldeshell weitergegeben wird, richtig?

Nebenbei bemerkt, welches Programm liest sich traditionell /etc/environment? Handelt es sich um POSIX oder nur um eine Konvention?

amn
quelle

Antworten:

11

Auszug aus der Ubuntu-Hilfe

/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.

/etc/profile - Diese Datei wird ausgeführt, wenn eine Bash-Anmeldeshell eingegeben wird (z. B. beim Anmelden über die Konsole oder über ssh) sowie vom DisplayManager, wenn die Desktopsitzung geladen wird.

Ich denke, all dies ist nur eine Konvention, aber nicht weit von einem Standard entfernt (ich weiß nicht, wie Systeme RedHat).

Mali
quelle
Es funktioniert auf RedHat (ab 7.6). Die '/ etc / environment' ist leer, war mein Server und die Einstellung wurde VAR=valuein einer Shell wirksam (nach erneuter Anmeldung).
DKroot
39

/etc/environmentist nicht Teil von POSIX, gehört zu PAM (Pluggable Authentication Module) und kann nur von Programmen verwendet werden, die mit PAM-Unterstützung kompiliert wurden (hauptsächlich von Anmeldesystemen, die anschließend die Shell oder die Benutzerumgebung starten). Dies bedeutet, dass es nicht einmal von Ihrer Shell gelesen wird.

Sie können die Programme /etc/environmentmit sehen grep -l pam_env /etc/pam.d/*.

Wird /etc/environmentalso zum Setzen von Variablen für Programme verwendet, die normalerweise nicht aus einer Shell heraus gestartet werden.

Neula
quelle