Comment définir une variable d'environnement au démarrage afin qu'elle puisse être utilisée dans les applications ?
Par exemple, ATOM_HOME
est utilisé par Atom.
Comment définir une variable d'environnement au démarrage afin qu'elle puisse être utilisée dans les applications ?
Par exemple, ATOM_HOME
est utilisé par Atom.
La solution utilise deux fichiers : environment.plist
y environment.conf
.
environment.plist
doit être placé dans ~/Library/LaunchAgents
pour une solution par utilisateur (recommandé), ou en /Library/LaunchAgents
pour une solution globale (non recommandé - faille de sécurité potentielle).
environment.conf
peut être placé presque partout. $PATH_TO_ENVIRONMENT_CONF
peut être relative, mais uniquement aux variables d'environnement "par défaut", ou à celles qui sont définies dans un fichier de type EnvironmentVariables
clé. 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"
Lorsqu'un utilisateur se connecte, les LaunchAgents de la section ~/Library/LaunchAgents
sont exécutées. Dans ce cas, sh -c xargs -L 1 launchctl < $PATH_TO_ENVIRONMENT_CONF
est exécuté. launchctl
gère les démons et les agents. Dans ce cas, nous l'utilisons pour définir une variable d'environnement accessible à toutes les applications et au 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
Cette solution peut également être étendue à d'autres sous-commandes launchctl.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.