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

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 festlegen sollte? Außer der Tatsache, dass /etc/environment zu existieren scheint, um die Umgebung für alle vom System ausgeführten Prozesse einzurichten, während /etc/profile zum Einrichten der von der Anmeldeshell verwendeten und weitergegebenen Umgebung dient, richtig?

Auch nebenbei bemerkt, welches Programm liest traditionell /etc/environment? Ist es mit POSIX verwandt, oder nur eine Konvention?

Author: beroe, 2013-10-23

2 answers

Auszug aus Die Ubuntu-Hilfe

/etc/environment - Diese Datei ist speziell für systemweite Umgebungsvariableneinstellungen gedacht. Es ist keine Skriptdatei, sondern besteht aus Zuweisungsausdrücken, einer pro Zeile. Insbesondere speichert diese Datei die systemweiten Einstellungen für Gebietsschema und Pfad.

/etc/profile - Diese Datei wird immer dann ausgeführt, wenn eine Bash-Anmeldeshell eingegeben wird (z. B. beim Anmelden über die Konsole oder über ssh), sowie vom DisplayManager während der Desktop-Sitzung Lasten.

Ich denke, das alles ist nur eine Konvention, aber nicht weit von einem Standard entfernt (ich weiß nichts über RedHat-ähnliche Systeme ).

 22
Author: Mali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-23 13:48:24

/etc/environment ist nicht Teil von POSIX, es gehört zu PAM (Pluggable Authentication Module), und nur Programme, die mit PAM-Unterstützung kompiliert wurden, können es verwenden (hauptsächlich Anmeldesysteme, die anschließend die Shell oder Benutzerumgebung starten). Dies bedeutet, dass es nicht einmal von Ihrer Shell gelesen wird.

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

Daher wird /etc/environment zum Festlegen von Variablen für Programme verwendet, die normalerweise nicht von einer Shell aus gestartet werden.

 47
Author: Neula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-08-24 15:49:44