Как запустить сценарий оболочки в OS X двойным щелчком мыши? - PullRequest
211 голосов
/ 26 февраля 2011

У меня есть скрипт оболочки, который имеет разрешение на выполнение пользователем в OS X, но когда я дважды щелкаю по нему, он открывается в текстовом редакторе. Как мне запустить его, дважды щелкнув по нему?

Ответы [ 7 ]

244 голосов
/ 26 февраля 2011
  • Сначала в терминале запустите исполняемый скрипт, набрав:

    chmod a+x (yourscriptname)
    
  • Затем в Finder щелкните правой кнопкой мыши свой файл и выберите «Открыть с помощью», а затем «Другие ...».

  • Здесь вы выбираете приложение, в которое вы хотите запустить файл, в данном случае это будет Терминал. Чтобы выбрать терминал, вам нужно переключиться с «Рекомендуемых приложений» на «Все приложения». (Приложение Terminal.app находится в папке «Утилиты»)

  • ОБРАТИТЕ ВНИМАНИЕ, что если вы не хотите связывать все файлы с этим расширением для запуска в терминале, вы не должны проверять «Всегда открывать с помощью».

  • После нажатия OK вы сможете выполнить скрипт, просто дважды щелкнув по нему.
211 голосов
/ 26 февраля 2011

Вы пытались использовать .command расширение файла?

135 голосов
/ 18 апреля 2015

Начиная с OSX 10.10 (Йосемити) и с минимум OS X 10.8 (Mountain Lion) , поведениеследует, когда вы открываете (двойной щелчок) исполняемые скрипты из Finder :

  • исполняемый файл скрипты [1] с суффиксом NO или суффикс .command:
    • выполняется по умолчанию - настройка не требуется :
      • a new Откроется окно терминала, в котором запускается скрипт.
      • по умолчанию, окно останется открытым после завершения сценария, чтобы вы могли проверить вывод (хотя в этот момент оболочка, запустившая сценарий, завершилась, и вы не можете взаимодействовать с нимбольше ).
        Однако через Preferences... > Profiles терминала можно автоматически закрыть окно при выходе из сценария.
    • Предостережение : работаетпапка всегда является домашней папкой текущего пользователя , а НЕ папкой, в которой находится скрипт.
      • Чтобы изменить сценарий оболочки на папку, в которой он находится, поместите
        • cd -- "$(dirname "$BASH_SOURCE")" сразу после строки shebang
        • или, если вы должны остаться, POSIX-совместимый, cd -- "$(dirname "$0")".
        • Для крайних случаев, таких как поиск истинного исходного каталога сценария с символической ссылкой , см. этот ответ моего.
    • Если сценарий неожиданно не исполняемый :
      • Сделать его исполняемым, запустив chmod +x <script> в терминале;в противном случае вы увидите следующие симптомы:
      • .command: Finder отображает вводящее в заблуждение сообщение об ошибке, в котором говорится, что проблема может быть исправлена ​​с помощью File > Get Info, что не соответствует действительности - используйте предложенный метод chmod +xвыше.
      • без суффикса:
        • с линией Шебанга (например, #!/bin/bash): поведение такое, как если бы суффикс был .sh - см. ниже.
        • с нет строка Шебанга: открывается в текстовом редакторе по умолчанию (по умолчанию TextEdit).
  • Сценарии с суффиксом .sh, независимо от того, исполняются они или нет:
    • открыты для редактирования в TextEdit.app или,если установлено, с Xcode.app.
  • Сценарии с суффиксом .scpt или .applescript (даже если они сами помеченыкак исполняемый файл, что обычно не так):
    • открыто для редактирования в [Apple]Script Editor
    • Обратите внимание, что JXA файлы с исходным кодом, похоже, не имеютсуффикс tinct (пока).
  • Скрипты с a custom суффикс (суффикс, еще не известный системе), исполняемый или нет(на самом деле, относится к любому виду файлов):
    • подсказка вам , чтобы приложение открывало их с помощью при первом откройте их и запомните, что выбор .

[1] Исполняемый файл означает: сценарий с установленными исполняемыми битами разрешений и вызывающим пользователем - относительно владельца файла - следовательно, потенциально может быть разрешен для его выполнения.
Если вы используете chmod a+x для установки все биты разрешений (что типично), любой может вызвать его (при условии, что им также разрешено читать файл, основанный на битах чтения)) и право собственности на файл).

38 голосов
/ 12 марта 2012

Кроме того, вы можете создать обычное приложение Mac OS X из своего скрипта, используя Platypus

11 голосов
/ 10 мая 2017

Самый простой способ - изменить расширение на .command или без расширения.

Но это откроет Терминал, и вам придется его закрыть. Если вы не хотите видеть вывод, вы можете использовать Automator для создания приложения Mac, которое вы можете дважды щелкнуть, добавить в док и т. Д.

  1. Открыть Automator приложение
  2. Выберите тип "Приложение"
  3. Введите "запустить" в поле поиска действий
  4. Двойной щелчок «Запуск сценария оболочки»
  5. Нажмите кнопку Run в правом верхнем углу, чтобы проверить ее.
  6. File > Save для создания Приложения.

enter image description here

8 голосов
/ 04 мая 2014

Нет необходимости использовать сторонние приложения, такие как Platypus.

Просто создайте сценарий Apple Script with Script Editor и используйте команду do shell script "shell commands" для прямых вызовов команд или исполняемых файлов сценариев оболочки, сохраняйте редактируемый сценарийсохраните файл где-нибудь и экспортируйте его, чтобы создать скрипт приложения.скрипт приложения можно запустить двойным щелчком мыши или выбором в папке панели.

0 голосов
/ 24 марта 2018

Вы также можете установить значения по умолчанию по расширению файла, используя RCDefaultApp:

http://www.rubicode.com/Software/RCDefaultApp/

потенциально вы можете установить .sh для открытия в iTerm / Terminal и т. Д., Для этого потребуются права пользователя на выполнение, например,

chmod u+x filename.sh

RCDefaultApp pref pane

...