2012-07-18 16 views
8

Come posso leggere una variabile ambientale che un utente ha impostato?Come posso leggere una variabile ambientale in Cocoa?

Sono nuovo nello sviluppo del desktop su Mac (cacao) e sto creando un piccolo strumento che posso utilizzare per accedere al servizio s3 di Amazon.

Ho impostato le mie variabili ambientali nel mio .bash_profile, ma voglio che funzioni indipendentemente da dove l'utente l'abbia inserito (.bashrc, .bash_profile o .profile ecc.).

+2

Se si imposta una variabile di ambiente in '.bash_profile',' .bashrc', ecc non sarà accessibile da GUI app. Questi file memorizzano le variabili di ambiente solo per la CLI, è necessario memorizzare le variabili di ambiente altrove se si desidera che siano leggibili dalle applicazioni GUI. Vedi http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x Potrebbe essere più facile chiedere all'utente di inserire di nuovo le informazioni e memorizzarle nel Portachiavi o nelle preferenze come appropriato . –

risposta

17

sguardo al metodo environment su un NSProcessInfo. Ritorna un NSDictionary dell'ambiente quindi ad es. per PATH

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

È possibile utilizzare un'API C dalla libreria GNU http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access

conversione in NSString: moderna obj-c:

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

eredità obj-c:

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

OSX fornisce tutto ciò per te – Mark

+0

Indipendentemente da ciò, è un approccio valido. – Patrick

+1

@Patrick e fallirebbe qualsiasi revisione del codice per essere più complessa di quanto necessario – Mark

Problemi correlati