我很好奇是否可以ProgramArguments
在 Mac OS X Leopard 上的 luanchd 脚本部分指定环境变量。
<?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 的字典中添加一个键:请参阅:创建启动守护程序和代理。
处理此问题的最佳方法是将命令包装在 shell 中。例如:
该标志
-c
告诉 ZSH(以及 Bash 和 sh)运行下一个指定的命令。如果您添加 flag-l
,它将在执行之前加载您的点文件,就像普通的登录 shell 一样。我不认为 launchd 本身就知道环境,至少不是 ${VARIABLE} 替换。
没有什么可以阻止您启动 shell 脚本(或带有 的 shell
-c
)作为您的 launchd 操作,这将有一个环境并尊重 ${VARIABLES} - 在这种情况下请注意系统和用户守护程序/代理之间的区别尽管...我不确定 - 我以前没有尝试过......但我可以告诉你,如果你关心的唯一变量是 home - 你可以使用 ~.