Как запустить сценарий оболочки в OS X двойным щелчком мыши?
У меня есть сценарий оболочки, который имеет разрешение на выполнение пользователем в OS X, но когда я дважды щелкаю по нему, он открывается в текстовом редакторе. Как мне запустить его, дважды щелкнув по нему?
7 ответов
Сначала в терминале запустите исполняемый скрипт, набрав:
chmod a+x (yourscriptname)
Затем в Finder щелкните правой кнопкой мыши свой файл и выберите "Открыть с помощью", а затем "Другие...".
Здесь вы выбираете приложение, в которое хотите запустить файл, в данном случае это будет Терминал. Чтобы выбрать терминал, вам нужно переключиться с "Рекомендуемых приложений" на "Все приложения". (Приложение Terminal.app можно найти в папке Utilities)
Обратите внимание, что если вы не хотите связывать все файлы с этим расширением для запуска в терминале, вы не должны проверять "Всегда открывать с".
- После нажатия OK вы сможете выполнить скрипт, просто дважды щелкнув по нему.
Начиная с OSX 10.10 (Yosemite) и начиная с версии OS X 10.8 (Mountain Lion), при открытии (двойным щелчком) исполняемых скриптов из Finder поведение выглядит следующим образом:
- Исполняемые скрипты [1] с суффиксом NO или суффиксом
.command
:- выполняются по умолчанию - настройка не требуется:
- Откроется новое окно терминала, в котором выполняется скрипт.
- по умолчанию окно останется открытым после завершения сценария, чтобы вы могли проверить вывод (хотя в этот момент вышла оболочка, запустившая сценарий, и вы больше не можете с ней взаимодействовать).
Тем не менее, через терминалPreferences... > Profiles
Вы можете выбрать автоматическое закрытие окна при выходе из скрипта.
- Предостережение: рабочая папка всегда является домашней папкой текущего пользователя, а НЕ папкой, в которой находится скрипт.
- Чтобы изменить сценарий оболочки на папку, в которой он находится, поместите
cd -- "$(dirname "$BASH_SOURCE")"
сразу после линии Шебанга- или, если вы должны оставаться POSIX-совместимым,
cd -- "$(dirname "$0")"
, - Для крайних случаев, таких как поиск истинного исходного каталога сценария с символической ссылкой, смотрите мой ответ.
- Чтобы изменить сценарий оболочки на папку, в которой он находится, поместите
- Если скрипт неожиданно не исполняется:
- Сделайте его исполняемым, запустив
chmod +x <script>
в терминале; в противном случае вы увидите следующие симптомы: .command
: Finder отображает вводящее в заблуждение сообщение об ошибке, которое предполагает, что проблема может быть исправленаFile > Get Info
что не соответствует действительности - используйтеchmod +x
метод, предложенный выше.- без суффикса:
- с линией Шебанга (например,
#!/bin/bash
): поведение такое, как если бы суффикс был.sh
- увидеть ниже. - без строки shebang: открывается в текстовом редакторе по умолчанию (по умолчанию это TextEdit).
- с линией Шебанга (например,
- Сделайте его исполняемым, запустив
- выполняются по умолчанию - настройка не требуется:
- Скрипты с суффиксом
.sh
исполняемый или нет:- открыты для редактирования в
TextEdit.app
или, если установлен, сXcode.app
,
- открыты для редактирования в
- Скрипты с суффиксом
.scpt
или же.applescript
(даже если они сами помечены как исполняемые, что обычно не так): - Скрипты с пользовательским суффиксом (суффикс, еще не известный системе), независимо от того, исполняется он или нет (фактически применяется к любому типу файла):
- предложит приложению открыть их при первом открытии и запомните этот выбор.
[1] Исполняемый означает: скрипт с установленными битами разрешений на исполняемый файл и вызывающим пользователем - относительно владения файлом - следовательно, потенциально могут его исполнить.
Если вы используете chmod a+x
чтобы установить все биты разрешений (что является типичным), любой может вызвать его (при условии, что им также разрешено читать файл на основе битов разрешений на чтение и владельца файла).
Кроме того, вы можете создать обычное приложение Mac OS X из своего скрипта с помощью Platypus
Самый простой способ - изменить расширение на .command
или без расширения.
Но это откроет Терминал, и вам придется его закрыть. Если вы не хотите видеть вывод, вы можете использовать Automator для создания приложения Mac, которое вы можете дважды щелкнуть, добавить в док и т. Д.
- открыто
Automator
приложение - Выберите тип приложения
- Введите "запустить" в поле поиска действий
- Дважды щелкните "Run Shell Script"
- Нажмите на
Run
кнопка в правом верхнем углу, чтобы проверить это. File > Save
создать приложение.
Нет необходимости использовать сторонние приложения, такие как Platypus.
Просто создайте Apple Script с помощью Script Editor и используйте команду do shell script "shell commands"
для прямых командных вызовов или исполняемых файлов сценариев оболочки сохраните редактируемый файл сценария в безопасном месте, а затем экспортируйте его для создания сценария приложения. Сценарий приложения запускается двойным щелчком мыши или выбором в папке бара.
Вы также можете установить значения по умолчанию по расширению файла, используя RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
потенциально вы можете настроить.sh на открытие в iTerm/Terminal и т. д., для этого потребуются разрешения пользователя на выполнение, например,
chmod u+x filename.sh
chmod 774 filename
Примечание. Файл с именем filename, в котором есть сценарий bash, не имеет расширения.