Configurando variables en environment.plist

3

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 ?

    
pregunta Sean 06.07.2017 - 20:53

1 respuesta

2
  • Descargar el agente de inicio:

    launchctl unload ~/Library/LaunchAgents/environment.plist
    
  • Modificar la configuración de plist / env
  • Vuelve a cargar el agente de inicio:

    launchctl load ~/Library/LaunchAgents/environment.plist
    

Tienes que salir y reiniciar Terminal para obtener el nuevo valor de la variable en el shell Terminal.

Recomiendo usar algo como

<string>launchctl setenv FOO foo; launchctl setenv BAR bar; launchctl setenv SUP sup</string>
    
respondido por el klanomath 06.07.2017 - 21:12

Lea otras preguntas en las etiquetas