¿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.
¿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.
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 < $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"
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 < $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
< # Since a plist is an xml document, angle brackets must be escaped.
< $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.
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.
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.