J'ai essayé de comprendre comment définir les variables d'environnement nécessaires aux applications lancées dans Sierra, mais je suis perplexe.
Suivant divers conseils trouvés en ligne, j'ai créé un fichier ~/Library/LaunchAgents/environment.plist
. Ça ressemble à ça :
<?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>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>
launchctl setenv FOO foo
launchctl setenv BAR bar
<!-- ... -->
launchctl setenv PATH /usr/local/opt/scala210/bin:/usr/local/bin:$PATH
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
D'après mes expériences, il semble que rien de moins qu'un redémarrage du système ne permette de prendre en compte les modifications apportées à ce fichier. J'ai trouvé des mentions de cette commande qui est censée faire l'affaire :
$ launchctl load ~/Library/LaunchAgents/environment.plist
...mais quand je l'exécute, j'obtiens cette réponse :
[my home dir]/Library/LaunchAgents/environment.plist: service already loaded
Dans la documentation de launchctl
Je vois la mention d'un -F
drapeau qui semble pertinent :
Force the loading or unloading of the plist. Ignore the Disabled key.
Cependant, cela ne fait aucune différence si j'inclus ce commutateur ; j'obtiens le même résultat et le fichier est ignoré.
Quoi qu'il en soit, le redémarrage fait en sorte que les changements prennent effet (peut-être qu'une déconnexion et une reconnexion le feraient également ? je n'ai pas vérifié), mais à une exception près : le fichier PATH
variable. Cette variable restait la même, quelle que soit la façon dont je la modifiais, et à travers les redémarrages. Finalement, je suis tombé sur une réponse de Stack Exchange qui avertissait de manière désinvolte que la modification de la variable PATH
de cette manière seront ignorés jusqu'à ce que le Dock soit redémarré avec la commande killall Dock
commandement. Donc j'ai fait ça, et j'ai redémarré, et enfin J'avais mon PATH
correctement.
Donc, de toute façon, je suppose que ma principale question serait : Existe-t-il un moyen plus simple de mettre à jour les variables d'environnement que celui que j'ai décrit ci-dessus ? Et une question subsidiaire pourrait être : Est-ce que la gestion spéciale des PATH
n'a aucun sens ?