我想设置一个运行bbdiff
命令的 Automator 快速操作,并将 Finder 中的选定文件传递给它。
我创建了一个快速操作,并将其设置为在“Finder.app”中接收“文件或文件夹”。
然后我添加了“运行外壳脚本”动作,并将外壳设置为“/bin/bash”,并将输入“作为参数”传递。脚本是:
/usr/local/bin/bbdiff "$1" "$2"
如果我从 Automator 或终端手动运行该脚本(用真实文件名替换参数),它会提示我授权主机程序控制 BBEdit,然后它就可以工作了。
但如果我从 Finder 运行它,我会收到以下错误:
“运行 Shell 脚本”操作遇到错误:“您必须允许
bbdiff
将事件发送到 BBEdit 应用程序。用于tccutil reset AppleEvents
重置系统权限,然后重试。bbdiff:错误:-1743”</p>
我尝试tccutil reset AppleEvents
再次运行并运行该操作,但它显示了相同的错误。
我还尝试将 bbdiff、/bin/bash 和 Finder 添加到 System Preferences > Privacy 的 Accessibility 和 Full Disk Access 选项卡中,但没有任何改变。看起来您需要在“自动化”选项卡中添加一些内容,而这无法手动完成。
我怎样才能让它允许像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 脚本,所以问题仍然存在。