gpt4 book ai didi

macos - 从 OSX Automator shell 脚本运行 Grunt

转载 作者:行者123 更新时间:2023-12-04 21:45:51 27 4
gpt4 key购买 nike

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

我创建了一个非常简单的 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 设置:

enter image description here

我做错了什么?


更新

如果我将其放入我的 launcher.sh 文件中:

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

我在 Automator 中得到一个不同的错误:env: node: No such file or directory

但是,和以前一样,如果我直接在终端中运行脚本就没问题 - 所以我认为 @mklement0 关于 PATH

的说法是正确的

更新 2

启动器.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

最佳答案

问题是从 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 - 不需要命令替换 ($(...)`...`),因为这实际上会首先执行命令 and 然后尝试执行 该命令的输出

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

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

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

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

关于macos - 从 OSX Automator shell 脚本运行 Grunt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com