4 votes

Définir les variables d'environnement avec launchd/launchctl

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 ?

7voto

Banjer Points 3754

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.

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