PATH 不受 .pam_environment 影响

Eli*_*lka 5 environment-variables 13.04 pam-environment

运行 Ubuntu 13.04,我尝试PATH为会话添加变量,建议在 inside 中执行此操作.pam_environment,但似乎没有任何效果。它看起来是这样的:

JAVA_HOME          DEFAULT=/usr/lib/jvm/java-7-oracle
IDEA_HOME          DEFAULT=/usr/local/idea-IU-129.451/bin
LIGHTTABLE_HOME    DEFAULT=/usr/local/LightTable
CLOUDIFY_HOME      DEFAULT=/home/eliranm/builds/gigaspaces-cloudify
PATH               DEFAULT=${PATH}    OVERRIDE=${PATH}:${JAVA_HOME}:${IDEA_HOME}:${LIGHTTABLE_HOME}:${CLOUDIFY_HOME}
Run Code Online (Sandbox Code Playgroud)

似乎所有变量都已设置,但PATH, 或者它以某种方式被覆盖。我尝试添加或附加变量,仅${PATH}使用,仅尝试将硬编码路径设置为值,但均无济于事。DEFAULTOVERRIDE

我遵循 Ubuntu 帮助社区的建议,我想避免将硬编码路径连接到内部,PATH因为/etc/environment它不是正确的范围,而且,如果没有变量,将很难维护。

其他人可能会受到此问题的影响,如此处所述,但到目前为止还没有人提供解决方案。

如何使这项工作有效?

小智 3

我认为在or$PATH范围内使用变量不会得到解决,而是按照字面意思进行分配。/etc/environment~/.pam_environment

事实上,我在我读到的大多数帖子中都看到不鼓励使用$PATH或内部的任何变量: Why does not myenvironment variable get set~/.pam_environment

所以我真的不知道为什么他们告诉在其中使用(会话范围的环境变量$PATH) 。

我知道 Debian 删除了本地解析,~/.pam_environment因为它存在很高的安全风险。

无论如何,为了我理解这两个文件/etc/environment~/.pam_environment使用更简单的语法(KEY=VAL每行简单对),然后/etc/security/pam_env.confVARIABLE [DEFAULT=[value]] [OVERRIDE=[value]])。因此,也许它们内部根本无法引用变量。

  • 好吧,我们应该修复 ubuntu 帮助上的文档。至少从 13.04 起。 (4认同)