Jaka jest różnica między / etc / environment a / etc / profile?

25

Rozumiem, że ten pierwszy jest ładowany przed drugim, ale jaka jest różnica koncepcyjna? Czy są jakieś dobre powody, dla których powinienem ustawić niektóre zmienne w jednej, a nie w drugiej? Z wyjątkiem faktu, że /etc/environmentwydaje się , że istnieje konfiguracja środowiska dla wszystkich procesów uruchamianych przez system, podczas gdy /etc/profilekonfiguracja środowiska wykorzystywanego i propagowanego z powłoki logowania, prawda?

Na marginesie, który program tradycyjnie czyta /etc/environment? Czy to jest związane z POSIX, czy tylko konwencją?

amn
źródło

Odpowiedzi:

11

Wyciąg z pomocy Ubuntu

/etc/environment- Ten plik jest przeznaczony specjalnie dla ogólnosystemowych ustawień zmiennych środowiskowych. To nie jest plik skryptu, ale raczej składa się z wyrażeń przypisania, po jednym w wierszu. W szczególności ten plik przechowuje ustawienia regionalne i ustawienia ścieżki w całym systemie.

/etc/profile - Plik ten jest wykonywany za każdym razem, gdy wprowadzana jest powłoka logowania bash (np. Podczas logowania z konsoli lub przez ssh), a także przez DisplayManager podczas ładowania sesji pulpitu.

Myślę, że wszystko to jest tylko konwencją, ale niedaleko od standardu (nie wiem o systemach podobnych do RedHata).

Mali
źródło
Działa na RedHat (od wersji 7.6). „/ Etc / environment” jest puste, to był mój serwer, a ustawienie VAR=valuezadziałało w powłoce (po ponownym zalogowaniu).
DKroot
39

/etc/environmentnie jest częścią POSIX, należy do PAM (Pluggable Authentication Module) i tylko programy skompilowane z obsługą PAM mogą z niego korzystać (głównie systemy logowania, które następnie uruchamiają powłokę lub środowisko użytkownika). Oznacza to, że nie jest nawet odczytywany przez powłokę.

Możesz zobaczyć programy korzystające /etc/environmentz grep -l pam_env /etc/pam.d/*.

/etc/environmentSłuży więc do ustawiania zmiennych dla programów, które zwykle nie są uruchamiane z powłoki.

Neula
źródło