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?
Respuesta
¿Demasiados anuncios?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.