Definiendo variables de entorno con launchd / launchctl

2

Hay diferentes soluciones con respecto a la definición de las variables de entorno que se almacenan en el proceso launchd , a saber, en StackOverflow y Superuser . ¿En qué se diferencian estas soluciones?

    
pregunta Percival Ulysses 22.09.2012 - 14:02

1 respuesta

4

Para mayor claridad, me referiré a esta solución como la solución estática , < a href="https://stackoverflow.com/a/3756686"> la segunda solución como la solución dinámica , y, finalmente, éste como la solución de agente de lanzamiento . Voy a comparar la solución estática y dinámica con el agente de lanzamiento, respectivamente.

La solución estática implica la edición de /etc/launchd.conf . Esto tiene la ventaja, al igual que con la solución de agente de lanzamiento, de que las variables se configuran en el inicio de sesión. Las desventajas son que

  • las variables se definen para todos los usuarios. La solución de agente de lanzamiento permite a cada usuario decidir por sí mismo. Si uno quiere definir variables para todos los usuarios con la solución de agente de inicio, el script de shell se puede modificar con un bucle (y otro archivo),
  • la definición de las variables en /etc/launchd.conf no permite cosas como la sustitución de variables y esas cosas (al menos eso creo, tal vez sea factible),
  • obviamente, necesita acceder a /etc/launchd.conf para retirar la solución estática, con la otra puede colocar todos los archivos en lugares accesibles, por ejemplo. el agente de lanzamiento en ~/Library/LaunchAgents/ ,
  • las variables no están disponibles inmediatamente después de editar el archivo, como ocurre con la solución de agente de inicio (pero vea más abajo).

La solución dinámica es similar a la solución del agente de lanzamiento. Su desventaja es que las variables no están disponibles inmediatamente después de iniciar sesión, primero debe (re) definirlas. Para combinar la solución dinámica con la otra, imagine que desea establecer la variable FOO en el contenido de la variable BAR . Deberías encender una concha, decir bash y escribir

launchctl setenv FOO "$BAR"
echo 'setenv FOO $BAR' >> ~/.conf.launchd

Entonces FOO estaría disponible en todas las aplicaciones iniciadas después de esta definición, y también se definiría justo después del siguiente inicio de sesión.

    
respondido por el Percival Ulysses 22.09.2012 - 14:02

Lea otras preguntas en las etiquetas