我正在OSX上运行一个具有以下内容的控制台应用程序......
public static void main(string[] args){
string mongoEndpoint = Environment.GetEnvironmentVariable("MONGO_ENDPOINT");
if(string.IsNullOrEmpty(mongoEndpoint))
{
_log.Fatal("Invalid Mongo Endpoint");
throw new Exception("Invalid Mongo Endpoint");
}
}
我在MONGO_ENDPOINT
添加了~/.bash_profile
环境变量,当我运行echo $MONGO_ENDPOINT
时,它会输出正确的值。
但是,当我在OSX中从Xamarin Studio运行我的控制台应用程序时,它会返回null。
我尝试运行以下内容以查看它是否是所有环境变量,并返回正确的值。
Console.Out.WriteLine(Environment.GetEnvironmentVariable("HOME"));
它完全输出/usr/myname
。
为什么它无法找到这个环境变量?
答案 0 :(得分:3)
如果从Finder / Spotlight启动,OS-X GUI应用程序将不会继承通过shell(bash,zsh等等)定义的私有/自定义env变种。你有两个选择:
1)从cmd行启动Xamarin Studio,以便您当前的用户'环境将被使用:
/Applications/Xamarin\ Studio.app/Contents/MacOS/XamarinStudio &
2)如果您希望从Finder / Spotlight启动的GUI应用程序可以使用用户环境变量,则需要修改/etc/launchd.conf
,请参阅此SO答案: