4 votos

Fuerza de launchd para volver a leer las variables de entorno

¿Hay alguna forma, reiniciar, para obligar a launchd a volver a leer variables de entorno definidas recientemente en /etc/launchd.conf ?

¿Se puede hacer con launchctl(1) ?

2voto

mtnygard Puntos 141

No hay ninguna manera de hacer esto", launchd" es el proceso master, el equivalente de "init" en otros sistemas unix, la única manera en cualquier otro demonio sería la realización de algún tipo de kill-HUP para volver a cargar los archivos de configuración, etc, pero esta operación no está permitida en launchd. Si usted la busque en la tabla de proceso es el número 1 del proceso, cada proceso que se está ejecutando actualmente, en cierto modo, un niño de la misma, por lo que un reboot es la única manera de lograr esto. Puede que tenga más suerte en el establecimiento de esas variables de entorno en otra área que está más inclinado a permitir que se reinicia.

    Dans-iMac:etc stuffe$ ps -ef | grep launchd | grep -v grep
    0     1     0   0  9:40am ??         0:09.47 /sbin/launchd
   65    18     1   0  9:40am ??         1:53.64 /usr/sbin/mDNSResponder -launchd
  213    73     1   0  9:41am ??         0:02.55 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd
    0    85     1   0  9:41am ??         0:00.08 /System/Library/CoreServices/ODSAgent.app/Contents/MacOS/ODSAgent -launchd
   89   230     1   0  9:41am ??         0:00.01 /sbin/launchd
  501   238     1   0  9:41am ??         0:00.23 /sbin/launchd
  501   933   238   0 10:53am ??         0:00.01 /System/Library/CoreServices/AirPort Base Station Agent.app/Contents/MacOS/AirPort Base Station Agent -launchd -allowquit

EDITAR:

Por supuesto, la falta de la solución obvia que usted puede agregar las variables relevantes en el archivo de configuración y, a continuación, sólo tiene que ejecutar los comandos manualmente con el fin de escapar de la necesidad de reiniciar el equipo, nada de lo que sólo recientemente los programas de inicio tendrá en cuenta cualquier cambio. He encontrado esta página en la que se explica con más detalle:

Conjunto de variables de entorno en launchd estará disponible para todos los programas en el sistema. Sin embargo, desde $HOME/.launchd.conf no es apoyado, este método se utiliza para variables del entorno global sólo.

El /etc/launchd.conf archivo contiene una lista de comandos a ejecutar por launchctl durante el inicio. Sin embargo conjunto de variables de entorno en /etc/launchd.conf no puede tener espacios y no puede hacer referencia a otros las variables de entorno; launchctl cuando se ejecuta en el Terminal no sufrir estas limitaciones. Tenga en cuenta que /etc/launchd.conf no existe por por defecto, así que vamos a necesitar para crear.

Es necesario reiniciar el equipo para cargar el contenido de /etc/launchd.conf. Sin embargo, si se ejecuta la correspondiente launchctlcommands en Terminal, se puede aliviar la necesidad de que el proceso de reinicio. Sólo recuerde que si sólo se hace la launchctl comandos, y no poner las entradas en /etc/launchd.conf, no persiste después de reiniciar el sistema.

Si usted quiere tener un sistema de ancho variable de entorno que utiliza espacios o ser dependiente de otra variable de entorno, se puede poner el launchctl comandos en uno de los archivos de la Terminal de lee. Usted tiene que salir y reiniciar el Terminal para acceder al nuevo conjunto de variables.

1voto

Peter Puntos 1

Sí, puede utilizar launchctl agregar para usted.

por ejemplo desde la terminal:

grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl

salidas en mi máquina:

 launchctl setenv _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true
 launchctl setenv JMETER_HOME /Applications/apache-jmeter-2.10
 lauchctl setenv GRADLE_HOME /usr/local/gradle-2.0

A continuación, puede reiniciar cualquier aplicación que necesite atención de forma

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