The difference between /etc/environment and /etc/profile

environment-variablesposixshell

I understand that the former is loaded prior to the latter, but what is the conceptual difference? Are there any good reasons I should set some variables in one and not in other? Except the fact that /etc/environment seems to exist to set up environment for all processes run by the system, while /etc/profile is for setting up environment used and propagated from the login shell, correct?

Also, on a side note, which program traditionally reads /etc/environment? Is it related to POSIX, or just a convention?

Best Answer

Extract from The Ubuntu help

/etc/environment - This file is specifically meant for system-wide environment variable settings. It is not a script file, but rather consists of assignment expressions, one per line. Specifically, this file stores the system-wide locale and path settings.

/etc/profile - This file gets executed whenever a bash login shell is entered (e.g. when logging in from the console or over ssh), as well as by the DisplayManager when the desktop session loads.

I think all this is just a convention but not far from a standard (I don't know about RedHat like systems ).