【问题标题】:OS X Mountain Lion: how set system-level environment variable with referenced value?OS X Mountain Lion:如何使用引用值设置系统级环境变量?
【发布时间】:2013-03-05 17:07:37
【问题描述】:

根据Setting environment variables in OS X?等这里的帖子,对于Mountain Lion,如果不是早期版本的OS X,在系统级别设置环境变量的唯一方法是使用(或创建) 文件 /etc/launchd.conf 包含以下命令:

setenv CATALINA_BASE /opt/local/share/java/tomcat6

(这似乎确实按预期工作。)

如果是这样,如何通过引用其他东西的值来做到这一点,例如,设置 JAVA_HOME?在 /etc/launchd.conf 我试过了

setenv JAVA_HOME $(/usr/libexec/java_home)

但如果我运行则在终端中

echo $JAVA_HOME

我只是按字面意思返回 $(/usr/libexec/java_home)。

相比之下,如果我将相同的 setenv JAVA_HOME $(/usr/libexec/java_home) 命令放入我的 ~/.profile 中,那么 echo $JAVA_HOME 的结果就是引用的实际值,即 /Library/Java/ JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home.

那么我应该如何修改 /etc/launchd.conf 中的 setenv 命令,使其给出第二个参数的 value 而不是字面的第二个参数?

【问题讨论】:

    标签: environment-variables osx-mountain-lion


    【解决方案1】:

    如果您需要附加到现有路径,您可以从终端执行类似“echo setenv PATH $PATH:/path_addition >> /etc/launchd.conf”之类的操作,launchd.conf 本身不能, 包含变量,但是如果您事先知道要使用的值,则可以使用它来注入它们。或者,创建一个为您执行类似操作的单独脚本。

    【讨论】:

    • 我并没有尝试附加到路径,而是明确地执行我要求的操作:为环境变量 JAVA_HOME 全局设置一个值。 (很多次我看到关于设置环境变量的帖子,但它们实际上只是关于 PATH —— 当然这只是一个环境变量。)
    • 应该是一样的原理。您只需要在将变量添加到 launchd.conf 之前解析变量
    猜你喜欢
    • 2012-08-18
    • 2012-10-29
    • 2011-11-22
    • 2017-07-02
    • 2012-08-23
    • 2011-10-23
    • 1970-01-01
    相关资源
    最近更新 更多