AppleScript“do shell script”忽略了PATH变量

时间:2013-08-27 07:35:12

标签: android macos applescript xamarin

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

现在一切都能正常工作,只有一个小故障。

命令“do script(”zipalign -f -v 4 /tmp/src.apk /tmp/tgt.apk“)如果我在一个单独的应用程序中运行它,它可以正常工作”终端“但是当终端窗口完成时它会打开。脚本中的其他所有内容都可以正常处理应用程序”Finder“。

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

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

确保“执行shell脚本”使用$ PATH查找命令的正确方法是什么,或者是否有一种通过“do script”关闭终端的防弹方式< /强>

2 个答案:

答案 0 :(得分:4)

当您将bash作为交互式登录shell调用时,/etc/paths/etc/paths.d/*中的路径将PATH添加到/usr/libexec/path_helper/etc/profiledo shell script运行}。 /etc/profile调用bash作为sh和非交互式非登录shell,它不会读取do shell script "eval `/usr/libexec/path_helper -s`; echo $PATH"

您可以手动运行path_helper:

{{1}}

答案 1 :(得分: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进程中。