osx – 为什么我的环境变量不能从命令行中看到?

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

sudo JAVA_HOME=/Library/Java/Home ./james-2.3.2/bin/run.sh

它工作正常.

但是,我想让JAVA_HOME成为一个环境变量,因此它也可以被其他应用程序看到.

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

export JAVA_HOME=/Library/Java/home

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

$echo $JAVA_HOME
/Library/Java/home

但是当我像这样再次运行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.

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

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

最佳答案
sudo将环境变量重置为安全默认值.

如果要保留该变量,则需要visudo并添加:

Defaults env_keep = "JAVA_HOME"

请注意,将用户环境变量传送到特权帐户可能存在安全风险.

转载注明原文:osx – 为什么我的环境变量不能从命令行中看到? - 代码日志