4

我正在尝试在 MacOS X 上使用 applescript 构建自动构建脚本。

现在一切正常,只有一个故障。

如果我在单独的应用程序“终端”中运行命令“do script (“zipalign -f -v 4 /tmp/src.apk /tmp/tgt.apk”)运行良好,但在终端窗口打开时保持打开状态完成。脚本中的其他所有内容都可以正常工作,以告知应用程序“Finder”。

如果我尝试通过“Finder”的tell中的“do shell script”运行命令,我只会收到错误“command not found”

zipalign的路径在/etc/paths中设置,可以通过任何终端窗口和“do shell”访问,但不能通过“do shell script”命令访问。

确保“do shell script”使用 $PATH 查找命令的正确方法是什么,或者是否有一种防弹方法来关闭“do script”留下的终端?

4

2 回答 2

5

当您将 bash 作为交互式登录 shell 调用时,/etc/paths和中的路径/etc/paths.d/*被添加到PATHby /usr/libexec/path_helper,它从/etc/profile. do shell script调用 bash 作为 sh 和作为非交互式非登录 shell,它不读取/etc/profile.

您可以手动运行 path_helper:

do shell script "eval `/usr/libexec/path_helper -s`; echo $PATH"
于 2013-08-27T10:09:07.593 回答
0

虽然这个问题是四年前的问题,但我认为需要说出最简单的答案。例如,我使用命令“wkhtmltopdf”(用于打印 pdf 并放置在 中/usr/local/bin

--past
wkhtmltopdf out.html out.pdf
--now
PATH=$PATH:/usr/local/bin; wkhtmltopdf out.html out.pdf

它只是将新的 PATH 变量添加到 AppleScript 调用的 sh 进程中。

于 2017-02-06T13:21:12.743 回答