4 votos

Definición de variables de entorno con launchd/launchctl

Existen diferentes soluciones en cuanto a la definición de las variables de entorno que se almacenan en el launchd proceso, concretamente en StackOverflow y Superusuario . ¿En qué se diferencian estas soluciones?

6voto

Banjer Puntos 1209

En aras de la claridad, me referiré a esta solución como el solución estática , la segunda solución como el solución dinámica , y finalmente este como el solución de agente de lanzamiento . Voy a comparar la solución estática y dinámica con la del agente de lanzamiento, respectivamente.

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

  • las variables se definen para todos los usuarios. La solución del agente de lanzamiento permite que cada usuario decida por sí mismo. Si uno quiere definir variables para todos los usuarios con la solución del agente de lanzamiento, el shell script puede ser modificado 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 esa es mi suposición, tal vez sea factible),
  • Evidentemente, se necesita acceso a /etc/launchd.conf para sacar la solución estática, con la otra puedes poner 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 en el caso de la solución del agente de lanzamiento (pero véase más adelante).

La solución dinámica es similar a la del agente de lanzamiento. Su desventaja es que las variables no están disponibles justo después del inicio de sesión, primero hay que (re)definirlas. Para combinar la solución dinámica con la otra, imagine que quiere establecer la variable FOO al contenido de la variable BAR . Deberías encender un shell, digamos el 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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X