He estado tratando de llegar a un acuerdo sobre cómo establecer las variables de entorno necesarias para las aplicaciones iniciadas en Sierra, pero estoy confundido.
Siguiendo varios consejos encontrados en línea, creé un archivo ~/Library/LaunchAgents/environment.plist
. Se parece a esto:
<?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>
Desde mi experimento, parece que nada menos que un reinicio del sistema hará que los cambios en este archivo surtan efecto. Encontré menciones de este comando que supuestamente hará el truco:
$ launchctl load ~/Library/LaunchAgents/environment.plist
... pero cuando lo ejecuto obtengo esta respuesta:
[my home dir]/Library/LaunchAgents/environment.plist: service already loaded
En la documentación de launchctl
veo una mención de un indicador -F
que parece relevante:
Force the loading or unloading of the plist. Ignore the Disabled key.
Sin embargo, no hace ninguna diferencia si incluyo este interruptor; Obtengo la misma salida y el archivo se ignora.
De todos modos, el reinicio hace que los cambios surtan efecto (tal vez desconectar y volver a iniciar también lo haría? No lo comprobé), pero con una excepción: la variable PATH
. Esa variable se mantuvo igual sin importar cómo la cambié, y durante los reinicios. Finalmente, me topé con una respuesta de Stack Exchange que advirtió de forma brusca que el cambio de PATH
de esta manera se ignoraría hasta que el Dock se reiniciara con el comando killall Dock
. Así que hice eso, y reinicié, y finalmente tuve mi PATH
configurado correctamente.
Entonces, de todos modos, supongo que mi pregunta principal sería: ¿Hay alguna forma más sencilla de actualizar las variables de entorno que la que describo anteriormente? Y una pregunta secundaria podría ser: ¿Tiene algún sentido el manejo especial de PATH
?