类 Linux 系统上的环境变量

类 Linux 系统上的环境变量

如何以最通用的方式为用户设置环境变量,且不依赖于 shell 环境变量(如 Bourne 类 shell 的配置文件、bahsrc、zshrc、zshenv 等)?这个想法是在用户登录期间为用户设置环境变量,并使其可用于(分叉)任何进程(不仅由 shell 进程生成,而且由任何其他进程生成),包括任何类型的 shell?

答案1

本 Ubuntu 文档谈论~/.pam_environment

会话范围的环境变量

适合于环境变量设置的文件应该只影响特定用户(而不是整个系统),它们是~/.pam_environment~/.profile。编辑完其中一个文件后,你应该重新登入以初始化变量。

~/.pam_environment

此文件专门用于设置用户的环境。它不是脚本文件,而是由赋值表达式组成,每行一个。此示例将变量 FOO 设置为文字字符串并修改 PATH 变量:

FOO=bar
PATH DEFAULT=${PATH}:${HOME}/MyPrograms

笔记:

  1. 在执行像示例这样的简单变量分配时,您可能不会引用该值FOO=bar

  2. 修改 PATH 所使用的语法与脚本文件的语法不同,但变量扩展必须能够正常工作。

  3. ~/.pam_environment 在您使用各种 GUI 设置语言或区域格式时写入。因此,如果您通过手动编辑设置 LC_TIME ~/.pam_environment,则如果您随后使用语言支持 GUI 更改区域格式设置,您的条目将被覆盖。

该文件以及/etc/environment似乎被pam_env.so我相信这会作为登录过程的一部分发生并且与任何 shell 无关。

相关内容