【问题标题】:Running Grunt from OSX Automator shell script从 OSX Automator shell 脚本运行 Grunt
【发布时间】:2016-02-29 17:09:02
【问题描述】:

我有一个简单的 Gruntfile,我希望能够从我的 OSX 扩展坞中的图标运行它。

我创建了一个非常简单的 shell 脚本 (launcher.sh),我将把它保存为一个应用程序,这样我就可以将它添加到我的 Dock 中。当我直接在终端中运行它时效果很好:

#!/usr/bin/env bash
$(grunt serve --open)

这个shebang也可以正常工作:#!/bin/bash

但是,当我从 Automator 工作流程调用 shell 脚本时,我收到以下错误:

launcher.sh: line 2: grunt: command not found

这是我的 Automator 设置:

我做错了什么?


更新

如果我把它放在我的launcher.sh 文件中:

#!/bin/bash
`/usr/local/bin/grunt serve --open`

我在 Automator 中遇到另一个错误:env: node: No such file or directory

但是,和以前一样,如果我直接在终端中运行脚本就可以了 - 所以我认为 @mklement0 对 PATH 是正确的

更新 2

launcher.sh

#!/bin/bash
grunt serve --open

自动机

PATH="/usr/local/bin:$PATH"
~/Public/Sites/launcher.sh

现在我在 Automator 中运行它时仍然会弹出错误消息,但它没有详细信息 - 它只是说:

The action "Run Shell Script" encountered an error.

日志面板显示一个空白条目。有没有办法获得更多信息?可能是详细模式?

更新 3

所以这很奇怪......如果我使用&> ~/log 它可以工作。没有它就会失败。

但这是有效的,谢谢@mklement0,现在可以了

PATH="/usr/local/bin:$PATH"
cd ~/Public/Sites && ./launcher.sh &> ~/log

【问题讨论】:

    标签: macos bash shell automator


    【解决方案1】:

    问题是从 Automator 运行时的 $PATH 变量与从终端运行时的条目不同。

    值得注意的是,/usr/local/bin 缺失,这是通常安装 grunt 的位置(如果安装全局)。

    一个简单的解决方法是将安装grunt 的文件夹添加到Automator shell 脚本顶部的$PATH

    PATH="/usr/local/bin:$PATH"
    ~/Public/Sites/Launcher.sh
    

    除此之外:

    • 您的 shell 命令 $(grunt serve --open) 应该只是 grunt serve --open - 无需替换命令($(...)`...`),因为这实际上会首先执行命令 然后尝试执行该命令的输出

    • 默认工作目录。当从 Automator 运行 shell 脚本时是 ~ (您的主文件夹),这可能不是您的脚本所期望的;看起来您的脚本需要自己的目录。作为工作目录,所以使用cd ~/Public/Sites && ./launcher.sh 来调用它。

    • 如果 shell 脚本以 nonzero 退出代码退出,Automator 将报告错误;错误消息将包括 shell 脚本的 stderr 输出(仅此而已) - 听起来在您的情况下没有产生 stderr 输出。

      • 要捕获所有输出以进行诊断,请使用./launcher.sh &> ~/log之类的内容

    在 macOS 10.11 到至少 10.15(截至本次更新)上,$PATH 在从 Automator 工作流运行的 shell 脚本中具有以下值:/usr/bin:/bin:/usr/sbin:/sbin

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 2020-05-24
      • 1970-01-01
      相关资源
      最近更新 更多