2012-07-18 12 views
8

¿Cómo podría leer una variable ambiental que un usuario ha establecido?¿Cómo puedo leer una variable ambiental en Cocoa?

Soy nuevo en el desarrollo de escritorio en Mac (cocoa), y estoy construyendo una pequeña herramienta que puedo usar para acceder al servicio s3 de Amazon.

Configuré mis variables de entorno en mi .bash_profile, pero quiero que esto funcione independientemente de donde el usuario lo haya ingresado (.bashrc, .bash_profile o .profile, etc.).

+2

Si establece una variable de entorno en '.bash_profile',' .bashrc', etc. no será accesible desde la aplicación GUI. Esos archivos almacenan variables de entorno solo para la CLI, debe almacenar las variables de entorno en otro lugar si desea que las aplicaciones de la GUI puedan leerlas. Consulte http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x. Puede ser más fácil simplemente pedirle al usuario que ingrese la información nuevamente y almacenarla en el llavero o en las preferencias según corresponda. . –

Respuesta

17

Look en el método environment en NSProcessInfo. Devuelve un NSDictionary del entorno, por ejemplo, para RUTA

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

Se puede utilizar una API C de la biblioteca GNU http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access

convertir a NSString: moderna obj-c:

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

legado obj-c:

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

OSX proporciona todo esto envuelto para usted – Mark

+0

Independientemente, es un enfoque válido. – Patrick

+1

@Patrick y fallaría cualquier revisión de código por ser más complejo de lo necesario – Mark

Cuestiones relacionadas