运行 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}
使用,仅尝试将硬编码路径设置为值,但都无济于事。DEFAULT
OVERRIDE
我正在遵循 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.conf
(VARIABLE [DEFAULT=[value]] [OVERRIDE=[value]]
)。因此,也许它们内部根本无法引用变量。
答案2
我也遇到过这个问题,因为我试图按照文档所说的方式去做(我传统上使用基于 Redhat 的系统)。
我认为使用 ${PATH} 仅当您的路径最初是在 /etc/security/pam_env.conf 文件中设置的。在我看来,原始路径是在 /etc/login.defs 中设置的,然后不可用。
我又回到了在 ~/.profile 中设置值,我花了太多时间调试这个看似简单的事情。这让我想知道其他 Ubuntu 用户会怎么做,我们不可能是第一个想要附加到路径变量的人。我猜他们也做了同样的事情,并忽略了 ~/.pam_environment。