1 votes

Définir une variable d'environnement pour les applications au démarrage

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.

2voto

0az Points 299

Solution

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 &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"

Comment cela fonctionne

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 &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

Cette solution peut également être étendue à d'autres sous-commandes launchctl.

LesApples.com

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.

Powered by:

X