PATH 不受 .pam_environment 影响

PATH 不受 .pam_environment 影响

运行 Ubuntu 13.04,我正在尝试PATH为会话添加变量,即建议在里面做.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}

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

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

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

如何实现这个功能?

答案1

我认为在或的$PATH范围内使用变量并没有得到解决,而是按照字面意思分配。/etc/environment~/.pam_environment

事实上,我看到大多数我读过的文章都不鼓励使用$PATH或使用任何变量,比如这里:~/.pam_environment为什么我的环境变量没有设置

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

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

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

答案2

我也遇到过这个问题,因为我试图按照文档所说的方式去做(我传统上使用基于 Redhat 的系统)。

我认为使用 ${PATH} 仅当您的路径最初是在 /etc/security/pam_env.conf 文件中设置的。在我看来,原始路径是在 /etc/login.defs 中设置的,然后不可用。

我又回到了在 ~/.profile 中设置值,我花了太多时间调试这个看似简单的事情。这让我想知道其他 Ubuntu 用户会怎么做,我们不可能是第一个想要附加到路径变量的人。我猜他们也做了同样的事情,并忽略了 ~/.pam_environment。

相关内容