2012-07-18 72 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