C# Environment.GetEnvironmentVariable(...) 不适用于 OSX

The*_*boy 8 c# macos mono xamarin

我正在 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经向我添加了一个MONGO_ENDPOINT环境变量~/.bash_profile,当我运行echo $MONGO_ENDPOINT它时会输出正确的值。

但是,当我在 OSX 中从 Xamarin Studio 运行我的控制台应用程序时,它返回 null。

我尝试运行以下命令以查看是否都是环境变量,并返回了正确的值。

Console.Out.WriteLine(Environment.GetEnvironmentVariable("HOME"));
Run Code Online (Sandbox Code Playgroud)

它输出得/usr/myname很好。

找不到这个环境变量的任何原因?

Sus*_*ver 5

如果 OS-X GUI 应用程序是从 Finder/Spotlight 启动的,它们将不会继承通过 shell(bash、zsh 等)定义的私有/自定义环境变量。你有两个选择:

1) 从 cmd 行启动 Xamarin Studio,以便使用您当前用户的环境:

/Applications/Xamarin\ Studio.app/Contents/MacOS/XamarinStudio &
Run Code Online (Sandbox Code Playgroud)

2)如果您希望用户环境变量可用于从 Finder/Spotlight 启动的 GUI 应用程序,您需要修改您的/etc/launchd.conf,请参阅此 SO 答案:

/sf/answers/262968051/

运行时配置指南