C# Environment.GetEnvironmentVariable(...) 在 OSX 上不起作用

Posted

技术标签:

【中文标题】C# Environment.GetEnvironmentVariable(...) 在 OSX 上不起作用【英文标题】:C# Environment.GetEnvironmentVariable(...) Not Working on OSX 【发布时间】:2016-06-09 04:46:19 【问题描述】:

我在 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");
    

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

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

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

Console.Out.WriteLine(Environment.GetEnvironmentVariable("HOME"));

它输出/usr/myname 非常好。

找不到这个环境变量有什么原因吗?

【问题讨论】:

我有这个问题,在这里找到答案***.com/a/3756674/3708323 【参考方案1】:

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

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

/Applications/Xamarin\ Studio.app/Contents/MacOS/XamarinStudio &

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

https://***.com/a/3756686/4984832

Runtime Configuration Guidelines

【讨论】:

以上是关于C# Environment.GetEnvironmentVariable(...) 在 OSX 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

C#进阶C# 泛型

C#进阶C# 匿名方法

C#进阶C# 多线程

C# 教程

[C#教程01]C# 简介

用 C# 编写 C# 编译器,先有鸡还是先有蛋?