如何以最通用的方式为用户设置环境变量,且不依赖于 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
笔记:
在执行像示例这样的简单变量分配时,您可能不会引用该值
FOO=bar
。修改 PATH 所使用的语法与脚本文件的语法不同,但变量扩展必须能够正常工作。
~/.pam_environment
在您使用各种 GUI 设置语言或区域格式时写入。因此,如果您通过手动编辑设置 LC_TIME~/.pam_environment
,则如果您随后使用语言支持 GUI 更改区域格式设置,您的条目将被覆盖。
该文件以及/etc/environment
似乎被pam_env.so
我相信这会作为登录过程的一部分发生并且与任何 shell 无关。