24 我理解前者是在后者之前加载的,但概念差异是什么?有没有什么好的理由我应该在一个变量中设置一些变量而不在其他变量中?除了/etc/environment为系统运行的所有进程设置环境似乎存在的事实,同时/etc/profile用于设置从登录shell使用和传播的环境,是否正确? 另外,在附注中,传统上读取哪个程序/etc/environment?它与POSIX有关,还是只是一个约定? shell environment-variables posix — AMN source
10 从Ubuntu帮助中提取 /etc/environment - 此文件专门用于系统范围的环境变量设置。它不是一个脚本文件,而是由赋值表达式组成,每行一个。具体来说,此文件存储系统范围的区域设置和路径设置。 /etc/profile - 无论何时输入bash登录shell(例如,从控制台登录或通过ssh登录),以及桌面会话加载时DisplayManager,都会执行此文件。 我认为这只是一个惯例,但距离标准不远(我不知道RedHat之类的系统)。 — 马里 source 它适用于RedHat(截至7.6)。'/ etc / environment'为空,我的服务器和设置VAR=value在shell中生效(重新登录后)。 — DKroot
36 /etc/environment不属于POSIX,它属于PAM(可插入身份验证模块),只有使用PAM支持编译的程序才能使用它(主要是登录系统,随后启动shell或用户环境)。这意味着它甚至不被你的shell读取。 您可以通过看节目/etc/environment用grep -l pam_env /etc/pam.d/*。 因此/etc/environment用于为通常不从shell启动的程序设置变量。 — Neula source
VAR=value
在shell中生效(重新登录后)。