Wie legen Sie eine Umgebungsvariable beim Start fest, damit sie in Anwendungen verwendet werden kann?
Wird beispielsweise ATOM_HOME
von Atom verwendet.
Die Lösung verwendet zwei Dateien: environment.plist
und environment.conf
.
environment.plist
~/Library/LaunchAgents
sollte für eine benutzerspezifische Lösung (empfohlen) oder für /Library/LaunchAgents
eine globale Lösung (nicht empfohlen – potenzielle Sicherheitslücke) eingesetzt werden .
environment.conf
kann fast überall platziert werden. $PATH_TO_ENVIRONMENT_CONF
kann relativ sein, aber nur zu den 'Standard'-Umgebungsvariablen oder irgendwelchen, die in einem EnvironmentVariables
Schlüssel definiert sind. 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"
Wenn sich ein Benutzer anmeldet, ~/Library/LaunchAgents
werden die LaunchAgents ausgeführt. In diesem Fall sh -c xargs -L 1 launchctl < $PATH_TO_ENVIRONMENT_CONF
wird ausgeführt. launchctl
verwaltet Dämonen und Agenten. In diesem Fall verwenden wir es, um eine Umgebungsvariable festzulegen, auf die alle Anwendungen und die Shell zugreifen können.
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
Diese Lösung kann auch auf andere launchctl-Unterbefehle erweitert werden.
Fahrrad
0az