Il existe différentes solutions concernant la définition des variables d'environnement qui sont stockées dans le fichier launchd
à savoir chez StackOverflow y Superutilisateur . En quoi ces solutions diffèrent-elles ?
Réponse
Trop de publicités?Pour des raisons de clarté, je ferai référence à cette solution comme le solution statique , la deuxième solution comme le solution dynamique , et enfin celui-ci comme le solution d'agent de lancement . Je vais comparer la solution statique et dynamique avec celle de l'agent de lancement, respectivement.
La solution statique implique l'édition de /etc/launchd.conf
. Cette solution présente l'avantage, comme celle de l'agent de lancement, que les variables sont définies dès la connexion. Les inconvénients sont les suivants
- les variables sont définies pour tous les utilisateurs. La solution de l'agent de lancement laisse chaque utilisateur décider pour lui-même. Si l'on veut définir des variables pour tous les utilisateurs avec la solution de l'agent de lancement, le shell script peut être modifié avec une boucle (et un autre fichier),
- la définition des variables dans
/etc/launchd.conf
ne permet pas des choses comme la substitution de variables et d'autres choses du genre (c'est du moins ce que je pense, peut-être est-ce faisable), - évidemment, vous devez avoir accès à
/etc/launchd.conf
pour retirer la solution statique, avec l'autre vous pouvez mettre tous les fichiers à des endroits accessibles, par exemple l'agent de lancement dans~/Library/LaunchAgents/
, - les variables ne sont pas disponibles immédiatement après l'édition du fichier, comme avec la solution de l'agent de lancement (mais voir ci-dessous).
La solution dynamique est similaire à la solution de l'agent de lancement. Son inconvénient est que les variables ne sont pas disponibles immédiatement après la connexion, vous devez d'abord les (re)définir. Pour combiner la solution dynamique avec l'autre, imaginez que vous vouliez définir la variable FOO
au contenu de la variable BAR
. Vous lancez un shell, disons le bash, et tapez
launchctl setenv FOO "$BAR"
echo 'setenv FOO $BAR' >> ~/.conf.launchd
Puis FOO
serait disponible dans toutes les applications lancées après cette définition, et serait également défini juste après la prochaine connexion.