Я хочу настроить быстрое действие Automator, которое запускает команду bbdiff
и передает ей выбранные файлы в Finder.
Я создал быстрое действие и настроил его на получение «файлов или папок» в «Finder.app».
Затем я добавил действие «Выполнить сценарий оболочки» и установил для оболочки значение «/ bin / bash» и «Передать ввод» в качестве аргументов. Сценарий такой:
/usr/local/bin/bbdiff "$1" "$2"
Если я запускаю этот сценарий вручную из Automator или Terminal (заменяя аргументы реальными именами файлов), он предлагает мне авторизовать хост-программу для управления BBEdit, и тогда он работает.
Но если я запускаю его из Finder, я получаю такую ошибку:
Действие «Запустить сценарий оболочки» обнаружило ошибку: «Вы должны разрешить
bbdiff
отправлять события в приложение BBEdit. Используйтеtccutil reset AppleEvents
для сброса разрешений системы и повторите попытку. bbdiff: ошибка: -1743 ”
Я попытался запустить tccutil reset AppleEvents
и снова запустить действие, но он показал ту же ошибку.
Я также попытался добавить bbdiff, / bin / bash и Finder на вкладки «Доступность» и «Полный доступ к диску» в «Системных настройках»> «Конфиденциальность», но ничего не изменилось. Похоже, вам нужно что-то добавить на вкладку «Автоматизация», что нельзя сделать вручную.
Как я могу заставить его разрешить команде UNIX, такой как bbdiff
, управлять приложением?
ОБНОВЛЕНИЕ:
Мне удалось обойти это, используя действие «Run AppleScript» вместо «Run Shell Script» со следующим скриптом:
on run {input, parameters}
tell application "BBEdit" to compare (item 1 of input) against (item 2 of input)
return input
end run
В первый раз, когда я запустил его, я получил приглашение разрешить Finder управлять BBEdit, и тогда он сработал.
Но это не сработает для других сценариев оболочки, поэтому вопрос все еще открыт.