我试图引入一个variables,并将其添加到Ubuntu 10.04的全局path。 根据官方文档 ,/ etc / environment是正确的地方。 这是我的例子看起来像:
GRADLE_HOME=/etc/gradle-0.9-preview-3 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$GRADLE_HOME/bin"
GRADLE_HOMEvariables被添加到环境中,但是在PATH赋值过程中不会解释$ GRADLE_HOMEvariables。 硬编码它工作正常。 没有什么大不了的,但是我想知道是否支持variablesreplace,或者是否有更好的方法来做到这一点? 谢谢!
从相关post的这个解释似乎提供了答案:
因为/ etc / environment不是shell脚本。 它是扩展环境variables的shell。 PAM模块pam_env是读取/ etc / environment的内容 – 它将其视为一个简单的KEY = VAL对列表,并相应地设置环境。 它没有做可变扩展的语言。
阅读pam_env.conf(5)联机帮助页。
我相信你需要在右边的variables名称周围添加花括号:
GRADLE_HOME=/etc/gradle-0.9-preview-3 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${GRADLE_HOME}/bin"
(可能不存在的)环境variables可以在使用$ {string}语法的值中使用,并且(可能不存在的)PAM_ITEM可以在使用@ {string}语法的值中使用。 $和@字符都可以被反斜杠转义以作为文字值使用“”,“escaped”不能分隔值。请注意,您希望使用的许多环境variables可能不会在模块被设置时设置例如,HOME被使用了几次,但是很多PAM应用程序在您需要的时候不能使用它。