Ho cercato di venire a patti con come impostare le variabili d'ambiente necessarie per avviare le applicazioni in Sierra, ma sono confuso.
Seguendo vari consigli trovati online, ho creato un file ~/Library/LaunchAgents/environment.plist
. Sembra così:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>
launchctl setenv FOO foo
launchctl setenv BAR bar
<!-- ... -->
launchctl setenv PATH /usr/local/opt/scala210/bin:/usr/local/bin:$PATH
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Dalla mia sperimentazione, sembra che nientemeno che un riavvio del sistema renderà effettive le modifiche a questo file. Ho trovato menzioni di questo comando che presumibilmente farà il trucco:
$ launchctl load ~/Library/LaunchAgents/environment.plist
... ma quando lo eseguo ottengo questa risposta:
[my home dir]/Library/LaunchAgents/environment.plist: service already loaded
Nella documentazione di launchctl
vedo menzione di un -F
di flag che sembra rilevante:
Force the loading or unloading of the plist. Ignore the Disabled key.
Tuttavia, non fa differenza se includo questo switch; Ottengo lo stesso risultato e il file è ignorato.
In ogni caso, il riavvio rende effettive le modifiche (forse anche il logout e il back-in non verificherei), ma con un'eccezione: la variabile PATH
. Quella variabile è rimasta invariata, indipendentemente dal modo in cui l'ho modificata e dai riavvii. Alla fine mi sono imbattuto in una risposta Stack Exchange che ha avvertito in modo inaspettato che la modifica di PATH
in questo modo sarebbe stata ignorata fino al riavvio del Dock con il comando killall Dock
. Così l'ho fatto, e riavviato e finalmente ho avuto il mio PATH
impostato correttamente.
Quindi, comunque, suppongo che la mia domanda principale sarebbe: c'è un modo più semplice di aggiornare le variabili d'ambiente rispetto al modo in cui descrivo sopra? E una domanda sussidiaria potrebbe essere: la gestione speciale di PATH
ha senso?