1 votos

Establecer la variable de entorno para las aplicaciones en el inicio

¿Cómo se establece una variable de entorno en el inicio para que se pueda utilizar en las aplicaciones?

Por ejemplo, ATOM_HOME es utilizado por Atom.

0 votos

¿Qué método utilizas para iniciar el átomo? Qué versión para la aplicación y qué compilación / versión para MacOS.

0 votos

Lo inicio desde el paquete de aplicaciones, y uso High Sierra.

2voto

alphadelta Puntos 169

Solución

La solución utiliza dos archivos: environment.plist y environment.conf .

environment.plist debe colocarse en ~/Library/LaunchAgents para una solución por usuario (recomendada), o en /Library/LaunchAgents para una solución global (no recomendada - potencial laguna de seguridad).

environment.conf puede colocarse en casi cualquier lugar. $PATH_TO_ENVIRONMENT_CONF pueden ser relativas, pero sólo a las variables de entorno "por defecto", o a las que estén definidas en un EnvironmentVariables clave. 1

environment.plist :

<?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>local.launchd.environment</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>xargs -L 1 launchctl &lt; $PATH_TO_ENVIRONMENT_CONF</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

environment.conf :

setenv ATOM_HOME $HOME/.config/atom
setenv SOME_VAR "Use quotes if spaces are necessary"

Cómo funciona

Cuando un usuario se conecta, los LaunchAgents en ~/Library/LaunchAgents se ejecutan. En este caso, sh -c xargs -L 1 launchctl < $PATH_TO_ENVIRONMENT_CONF se ejecuta. launchctl gestiona demonios y agentes. En este caso, lo estamos utilizando para establecer una variable de entorno accesible a todas las aplicaciones y al shell.

xargs -L 1 launchctl &lt; $PATH_TO_ENVIRONMENT_CONF

xargs                     # xargs converts stdin to command line arguments
xargs -L 1                # Tells xargs to invoke launchctl for each line
           launchctl      # Run launchctl with the arguments
                     &lt; # Since a plist is an xml document, angle brackets must be escaped. 

                     &lt; $PATH_TO_ENVIRONMENT_CONF
                          # This tells xargs to read input from the file at $PATH_TO_ENVIRONMENT_CONF

Esta solución también puede extenderse a otros subcomandos de launchctl.

1 votos

No parece funcionar en High Sierra.

0 votos

Sigue funcionando para mí.

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