【发布时间】:2019-09-01 09:05:18
【问题描述】:
我想设置一个运行 bbdiff 命令的 Automator 快速操作,并将 Finder 中的选定文件传递给它。
我创建了一个快速操作,并将其设置为在“Finder.app”中接收“文件或文件夹”。
然后我添加了“运行 Shell 脚本”动作,并将 shell 设置为“/bin/bash”,并将输入“作为参数”传递。脚本是:
/usr/local/bin/bbdiff "$1" "$2"
如果我从 Automator 或终端手动运行该脚本(用真实文件名替换参数),它会提示我授权主机程序控制 BBEdit,然后它就可以工作了。
但如果我从 Finder 运行它,我会收到以下错误:
“运行 Shell 脚本”操作遇到错误:“您必须允许
bbdiff将事件发送到 BBEdit 应用程序。 使用tccutil reset AppleEvents重置系统权限,然后重试。 bbdiff:错误:-1743”
我尝试运行 tccutil reset AppleEvents 并再次运行该操作,但它显示相同的错误。
我还尝试将 bbdiff、/bin/bash 和 Finder 添加到系统偏好设置 > 隐私的可访问性和全盘访问选项卡中,但没有任何改变。看来您需要在“自动化”选项卡中添加一些内容,而这无法手动完成。
如何让它允许像 bbdiff 这样的 UNIX 命令来控制应用程序?
更新:
我设法通过使用“运行 AppleScript”操作而不是“运行 Shell 脚本”来解决这个问题:
on run {input, parameters}
tell application "BBEdit" to compare (item 1 of input) against (item 2 of input)
return input
end run
第一次运行时,提示允许Finder控制BBEdit,然后就成功了。
但这不适用于其他 shell 脚本,所以问题仍然悬而未决。
【问题讨论】:
-
您应该能够将可执行文件(无论如何在 Mojave 中)添加到 System Preferences > Security & Privacy > Privacy > Accessibility 窗格。
-
@red_menace 我试过了,但没有运气。我认为需要将其添加到自动化窗格中,无法手动完成。
标签: automator finder appleevents