授权UNIX命令来控制应用程序

时间:2019-04-10 19:59:16

标签: automator finder appleevents

我想设置一个运行bbdiff命令的Automator快速操作,并将选定的文件传递给Finder。

我创建了一个快速操作,并将其设置为在“ Finder.app”中接收“文件或文件夹”。

然后,我添加了“运行Shell脚本”操作,并将shell设置为“ / bin / bash”,并将“作为参数”传递给Input。脚本是:

/usr/local/bin/bbdiff "$1" "$2"

如果我从Automator或Terminal手动运行该脚本(将参数替换为真实文件名),则会提示我授权主机程序控制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脚本,因此问题仍然存在。

1 个答案:

答案 0 :(得分:1)

就我而言,我可以通过关闭当前打开的BBEdit并再次打开它来对其进行修复。就我而言,在出现错误之前我正在进行BBEdit更新。