4 votos

cómo puedo utilizar $HOME, ~ o la variable de entorno en el archivo plist de LaunchDaemons

Quiero ejecutar un programa mediante el uso de plist, por ejemplo

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

Pero la ruta podría cambiarse en diferentes sistemas, así que sería bueno si puedo usar una variable de entorno para el plist.

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

Pero parece que el plist no soporta la variable de entorno. Cuando ejecuto el /Library/LaunchDaemons/startup.plist, tengo un error con el mensaje:

Invalid or missing Program/ProgramArguments 

¿Hay alguna forma de evitarlo?

4voto

Jose Chavez Puntos 645

Los plists, o listas de propiedades, no son más que un formato de archivo para almacenar objetos serializados, por ejemplo, configuraciones o similares. El formato de archivo especifica cómo se almacenan las cadenas, pero no especifica nada acerca de los detalles de nivel superior - como la forma en que los nombres de archivo se almacenan, analizan o tratan de otra manera.

Esto significa que no es posible responder a su pregunta en general para los plists.

La interpretación de $HOME, ~ y las variables de entorno en general en los plists son, por tanto, específicas de la aplicación. Para algunos programas, podría funcionar - para otros no. Depende enteramente de cómo ese programa fue hecho.

ACTUALIZACIÓN: Ha cambiado su pregunta para que sea sobre LaunchDaemons específicamente, y no sobre plists en general.

Para /Library/LaunchDaemons/startup.plist no es posible referirse directamente a las variables de entorno que mencionas. No son analizadas y reemplazadas con valores por launchd. Además, probablemente no habría funcionado como pensabas aunque lo fueran, porque los LaunchDaemons son ejecutados por Root si no se especifica nada más.

Lo que puede hacer es remitir un programa en el startup.plist que cuando se ejecuta puede acceder al entorno y hacer la sustitución de variables por ti. Por ejemplo, así:

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X