5 votes

Comment puis-je utiliser $HOME, ~ ou une variable d'environnement dans le fichier plist de LaunchDaemons ?

Je veux lancer un programme en utilisant plist, par exemple

<key>Program</key>
<string>/the_path_to/startup.sh</string>

Mais le chemin d'accès peut être changé dans différents systèmes, donc il serait bien que je puisse utiliser une variable d'environnement pour le plist.

<key>Program</key>
<string>$HOME/startup.sh</string>

Mais il semble que Plist ne supporte pas les variables d'environnement. Lorsque je lance le fichier /Library/LaunchDaemons/startup.plist, j'obtiens une erreur avec le message :

Invalid or missing Program/ProgramArguments 

Y a-t-il un moyen de contourner ce problème ?

5voto

Jose Chavez Points 645

Les Plists, ou listes de propriétés, ne sont qu'un format de fichier permettant de stocker des objets sérialisés - par exemple des configurations ou autres. Le format de fichier spécifie comment les chaînes de caractères sont stockées, mais il ne spécifie rien sur les détails de plus haut niveau - comme la façon dont les noms de fichiers sont stockés, analysés ou traités.

Cela signifie qu'il n'est pas possible de répondre à votre question en général pour les plists.

L'interprétation de $HOME, ~ et des variables d'environnement en général dans les plists est donc spécifique à l'application. Pour certains programmes, cela pourrait fonctionner - pour d'autres, non. Cela dépend entièrement de la façon dont le programme a été créé.

MISE À JOUR : Vous avez modifié votre question pour qu'elle concerne spécifiquement LaunchDaemons, et non les listes en général.

Pour /Library/LaunchDaemons/startup.plist il n'est pas possible de se référer directement aux variables d'environnement que vous mentionnez. Elles ne sont pas analysées et remplacées par des valeurs par launchd. De plus, cela n'aurait probablement pas fonctionné comme vous le pensiez même si elles l'avaient été, car les démons de lancement sont exécutés par Root si rien d'autre n'est spécifié.

Ce que vous pouvez faire, c'est référencer un programme dans la section startup.plist qui, lorsqu'il est exécuté, peut accéder à l'environnement et effectuer la substitution de variable pour vous. Par exemple, comme ceci :

<key>ProgramArguments</key>
<array>
    <string>/bin/sh</string>
    <string>-c</string>
    <string>exec $HOME/startup.sh</string>
</array>

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