使用launchd.plist在启动时运行terminal命令

时间:2016-06-07 00:38:37

标签: macos plist startup boot launchd

我正在寻找关于stackoverflow的问题的答案,并找到了一个帖子(https://superuser.com/questions/229773/run-command-on-startup-login-mac-os-x)。这就是我发现有关launchd.plist的方法,我自己做了一个:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>js.leapmotion</string> 
    <key>OnDemand</key>
    <false/>

    <key>ProgramArguments</key>
    <array>
            <string>open</string>
            <string>/Applications/Utilities/Terminal.app</string>
    </array>

    <key>LaunchOnlyOnce</key>
    <true/>
</dict>
</plist>

这确实在启动我的mac后启动了我的终端。但现在我希望它导航到一个目录并在那里运行命令gulp。 这将再次完成剩下的工作,打开一个本地主机等等......

所以最后我只需要在特定目录中运行gulp。就这样。如果launchd.plist不是最佳方式,那么我愿意接受替代方案。 否则我想知道如何告诉终端它应该运行什么命令。

感谢提示。 欢呼声

Ĵ

1 个答案:

答案 0 :(得分:0)

您可以使用open命令打开终端并使用-a标志运行脚本。例如,open -a Terminal /path/to/myscript将打开一个新的终端窗口并运行myscript。请注意,当myscript完成时,会话将终止(即没有shell)。要更改它,您可以运行bash或任何您喜欢的shell作为脚本的一部分。

在您的情况下,我建议创建一个基本脚本来执行您希望终端执行的任何操作,例如:

#!/usr/bin/env bash

cd /path/to/your/directory
/usr/bin/gulp

保存(确保它的可执行文件),然后更改你的launchd plist以匹配:

<key>ProgramArguments</key>
<array>
        <string>open</string>
        <string>-a</string>
        <string>Terminal</string>
        <string>/path/to/yourscript</string>
</array>