web-dev-qa-db-fra.com

Quelle est la différence entre / etc / environment et / etc / profile?

Je comprends que le premier est chargé avant le dernier, mais quelle est la différence conceptuelle? Y a-t-il de bonnes raisons pour lesquelles je devrais définir certaines variables dans l'une et pas dans l'autre? Exception faite du fait que /etc/environment semble exister pour configurer l'environnement pour tous les processus exécutés par le système, alors que /etc/profile sert à configurer l'environnement utilisé et propagé à partir du shell de connexion, n'est-ce pas?

De plus, quel programme lit traditionnellement /etc/environment? Est-ce lié à POSIX ou simplement à une convention?

22
amn

Extrait de l'aide d'Ubuntu

/etc/environment - Ce fichier est spécifiquement conçu pour les paramètres de variable d'environnement à l'échelle du système. Ce n'est pas un fichier de script, mais plutôt une expression d'affectation, une par ligne. Plus précisément, ce fichier stocke les paramètres régionaux et de chemin d'accès à l'échelle du système.

/etc/profile - Ce fichier est exécuté chaque fois qu'un shell de connexion bash est entré (par exemple, lors de la connexion à partir de la console ou via ssh), ainsi que par le DisplayManager lors du chargement de la session de bureau.

Je pense que tout ceci n’est qu’une convention mais pas très loin d’une norme (je ne connais pas les systèmes RedHat).

8
Mali

/etc/environment ne fait pas partie de POSIX, il appartient à PAM (Pluggable Authentication Module), et seuls les programmes compilés avec le support de PAM peuvent l'utiliser (principalement les systèmes de connexion qui démarrent ensuite l'environnement Shell ou l'utilisateur). Cela signifie qu'il n'est même pas lu par votre shell.

Vous pouvez voir les programmes utilisant /etc/environment avec grep -l pam_env /etc/pam.d/*.

Donc, /etc/environment est utilisé pour définir des variables pour des programmes qui ne sont généralement pas démarrés à partir d'un shell.

32
Neula