在launchd脚本中使用环境variables

我很好奇,如果可以在Mac OS X Leopard的luanchd脚本的ProgramArguments部分中指定一个环境variables

 <?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>me.mpietz.MountDevRoot</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>$HOME/bin/attach-devroot.sh</string> <!-- Instead of using... <string>/Users/mpietz/bin/attach-devroot.sh</string --> </array> <key>RunAtLoad</key> <true/> </dict> </plist> 

不在ProgramArguments键中。 你需要添加一个EnvironmentVariables键到你的plist的字典中,像这样:

 <?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>EnvironmentVariables</key> <dict> <key>AN_ENVIRONMENT_VARIABLE_NAME</key> <string>the_value</string> </dict> <key>Label</key> <string>me.mpietz.MountDevRoot</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>$HOME/bin/attach-devroot.sh</string> <!-- Instead of using... <string>/Users/mpietz/bin/attach-devroot.sh</string --> </array> <key>RunAtLoad</key> <true/> </dict> </plist> 

我不确定 – 我以前没有尝试过…但是我可以告诉你,如果你关心的唯一variables是家,你可以使用〜。

 So: <string>~/bin/attach-devroot.sh</string> 

我不认为launchd在本地知道环境,至less不是$ {VARIABLE}replace。

没有任何东西可以阻止你启动一个shell脚本(或者一个带-c的shell)作为你的launchd动作,这样做会有一个环境和尊重$ {VARIABLES} – 注意系统和用户守护进程/代理之间的区别那个情况虽然…