2012-07-18 42 views
8

我如何读取用户设置的环境变量?如何在Cocoa中读取环境变量?

我是新来的Mac(可可)桌面开发,我正在构建一个小工具,我可以用它来访问亚马逊的S3服务。

我在我的.bash_profile中设置了我的环境变量,但是我希望这可以工作,而不管用户输入它的位置(.bashrc,.bash_profile或.profile等)。

+2

如果在'.bash_profile','.bashrc'等中设置了一个环境变量,它将无法从GUI应用程序访问。这些文件仅存储CLI的环境变量,如果您希望它们可由GUI应用程序读取,则应将环境变量存储在其他位置。请参阅http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x只需要用户再次输入信息并将其存储在钥匙串或适当的偏好中就可能更容易。 – 2012-07-18 21:13:57

回答

17

看在NSProcessInfo上的environment方法。它返回环境的NSDictionary,例如for PATH

NSString* path = [[[NSProcessInfo processInfo]environment]objectForKey:@"PATH"]; 
5

您可以使用一个C API从GNU库 http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access

转换成的NSString: 现代OBJ-C:

NSString *envVarString = @(getenv("__MY_ENV_NAME__")); 

传统的OBJ-C:

NSString *envVarString = [NSString stringWithUTF8String: getenv("__MY_ENV_NAME__")]; 
+0

OSX为您提供这些全部包装 – Mark 2012-07-18 23:04:47

+0

无论如何,这是一种有效的方法。 – Patrick 2013-05-07 04:28:16

+1

@Patrick,并且会因为比需要的更复杂而失败任何代码复审 – Mark 2013-05-07 09:45:28