Dove sono impostate le variabili di ambiente di sistema in Mountain Lion?


46

In Lion (e versioni precedenti) era presente .MacOSX/environment.plist. Dopo l'aggiornamento a 10.8, il file è ancora lì, ma le variabili non stanno prendendo.

Ho anche provato ad aggiungerli /etc/launchd.confe verranno visualizzati in Terminal, ma non nelle applicazioni GUI (come il mio IDE).


Hai riavviato dopo aver cambiato /etc/launchd.conf?
Nohillside

L'ho fatto e tutte le variabili ivi contenute sono ora disponibili in qualsiasi terminale, ma non presenti per il mio IDE.
Felix,

Forse l'IDE non ti espone l'ambiente (vedi la mia risposta )? Che IDE è? viene lanciato direttamente dal Finder o Spotlight?
halloleo,

Risposte:


22

Ho posto questa domanda anche sui forum degli sviluppatori Apple e ho ricevuto questa risposta ufficiale.

Modifica la Info.plist del .app stesso per contenere un dizionario "LSEnvironment" con le variabili di ambiente che desideri.
~ / .MacOSX / environment.plist non è più supportato.


2
Dove si trova quello?
orome,

Sarebbe utile fornire un collegamento a un esempio più specifico.
Blaisorblade,

1
Aggiornamento: ho provato a cambiare quel file, dopo aver capito la sintassi (credo), ma non funziona affatto per me.
Blaisorblade,

4
Ci sarà un Info.plist per applicazione in WhatEver.app/Content/Info.plist. Puoi modificarlo con XCode. Fai clic su "+" nell'elenco delle proprietà delle informazioni e aggiungi un dizionario chiamato LSEnvironment. Se lo digiti correttamente, lo rinominerà in variabili di ambiente. Quindi fai clic su "+" per quello per ogni variabile di ambiente che desideri aggiungere.
Felix

2
Questa è una buona soluzione, ma non funziona più a partire da Yosemite 10.10.5.
Dalmazio,

21

So che questa è una vecchia domanda, ma ho pensato di sottolineare che in Yosemite /etc/launchd.confnon funziona più (come confermato dalla pagina man). Quindi ecco un'alternativa.

Avvia AppleScript Editor, inserisci un comando come questo:

do shell script "launchctl setenv variablename value"

(aggiungi tutte le righe che desideri)

Ora salva (⌘S) come Formato file: Applicazione . Infine apri Impostazioni di sistemaUtenti e gruppiElementi di accesso e aggiungi la tua nuova applicazione.


Si noti che potrebbe non funzionare né con altre app aperte come elementi di accesso e forse con quelle che si aprono rapidamente dopo l'accesso
user151019

Questo ha funzionato per me. Grazie mille. Questo ha fatto impazzire tutto il giorno!
venerdì

2
Sembra l'unica soluzione reale e universale finora. Ma ha bisogno di altri 9 voti per salire e diventare la prima risposta. : c
Sarge Borsch,

Questo ha funzionato per me su El Capitan. Come notato sopra da @Mark, ci sono problemi con l'ordinamento (ad es. Le applicazioni riprese potrebbero non avere l'ambiente), ma una volta effettuato l'accesso funziona come previsto. Cioè, le applicazioni avviate da Spotlight o Dock hanno l'ambiente corretto.
Alec Thomas

@Mark Puoi provare questa risposta , usando Launch Agent. Nel mio caso, Launch Agent si avvia dopo gli elementi di accesso, quindi sposto l'applicazione di destinazione (come Eclipse) dall'elemento di accesso a Launch Agent, in modo che vengano avviati dopo questa speciale applicazione che imposta le variabili di ambiente.
Franklin Yu,

10

Come hai scoperto, l'uso del file environment.plist non è più seguito, le variabili memorizzate in Info.plist come stringhe LSEnvironment sono impostate solo da launchd .

Non puoi dipendere da loro per impostare una variabile d'ambiente generale che il terminale imposterà se chiami direttamente il tuo programma dal terminale / shell. La buona notizia è che il open -acomando avvia launchd per eseguire l'avvio, quindi le variabili verranno impostate in modo coerente per l'ambiente dell'app se non per l'ambiente shell locale.


4

L'impostazione delle variabili di ambiente /etc/launchd.confè la strada da percorrere: ogni applicazione avviata dopo un riavvio da shell locali, Finder o Spotlight eredita queste variabili - l'ho testato ampiamente con Mountain Lion 10.8.3.

2 avvertenze:


1
/etc/launchd.confnon è più supportato da Yosemite. Vedi apple.stackexchange.com/questions/106355/…
Franklin Yu,

3

Prova launchctl setenv NAME VALUE. Non so se / cosa faccia diversamente dalla modifica di launchd.conf, ma funziona per me sia nelle app Terminal che nella GUI. Più dettagli.

Nota che questo non sopravvive attraverso un riavvio. Ecco un modo per risolverlo .


3
Questa è una pagina piuttosto lunga a cui stai collegando qui. Dov'è esattamente la parte rilevante? Potresti includerlo direttamente nella tua risposta per renderlo più facile per tutti?
Nohillside

2
oops, buon punto, ho pensato di aver incluso più di un frammento in quell'URL. fisso.
Ryan,

1
Il modo di sopravvivere attraverso un riavvio dato lì utilizza l'ambiente.plist che ha smesso di funzionare sotto Lion
user151019
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.