为什么在命令行中看不到我的环境变量?

Rob*_*ume 3 osx java environment-variables

我正在尝试在 Lion (Mac OS X 10.7.2) 上运行 James SMTP 服务器。当我这样做时:

sudo JAVA_HOME=/Library/Java/Home ./james-2.3.2/bin/run.sh
Run Code Online (Sandbox Code Playgroud)

它工作正常。

但是,我想让 JAVA_HOME 成为环境变量,以便其他应用程序也可以看到它。

我编辑 ~/.bash_profile 看起来像这样:

export JAVA_HOME=/Library/Java/home
Run Code Online (Sandbox Code Playgroud)

并且该变量似乎从命令行可见,如下所示:

$ echo $JAVA_HOME
/Library/Java/home
Run Code Online (Sandbox Code Playgroud)

但是当我像这样再次运行 james 时,我收到了关于 JAVA_HOME 的警告:

$ sudo ./james-2.3.2/bin/run.sh
ERROR: JAVA_HOME not found in your environment.

Please, set the JAVA_HOME variable in your environment to match the
location of the Java Virtual Machine you want to use.
Run Code Online (Sandbox Code Playgroud)

任何想法我做错了什么?为什么运行 james 的命令看不到 JAVA_HOME 环境变量?

非常感谢任何信息,谢谢!

Pat*_*ick 5

sudo 将环境变量重置为安全默认值。

如果要保留该变量,则需要visudo添加以下内容:

Defaults env_keep = "JAVA_HOME"
Run Code Online (Sandbox Code Playgroud)

请注意,将用户环境变量转移到特权帐户可能存在安全风险。