Как запустить сценарий оболочки в OS X двойным щелчком мыши?

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

7 ответов

Решение
  • Сначала в терминале запустите исполняемый скрипт, набрав:

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

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

  • Обратите внимание, что если вы не хотите связывать все файлы с этим расширением для запуска в терминале, вы не должны проверять "Всегда открывать с".

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

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

Начиная с 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 (даже если они сами помечены как исполняемые, что обычно не так):
    • открыт для редактирования в [Apple]Script Editor
    • Обратите внимание, что файлы исходного кода JXA, похоже, не имеют четкого суффикса (пока).
  • Скрипты с пользовательским суффиксом (суффикс, еще не известный системе), независимо от того, исполняется он или нет (фактически применяется к любому типу файла):
    • предложит приложению открыть их при первом открытии и запомните этот выбор.

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

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

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

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

  1. открыто Automator приложение
  2. Выберите тип приложения
  3. Введите "запустить" в поле поиска действий
  4. Дважды щелкните "Run Shell Script"
  5. Нажмите на Run кнопка в правом верхнем углу, чтобы проверить это.
  6. 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

Предварительная панель RCDefaultApp

chmod 774 filename

Примечание. Файл с именем filename, в котором есть сценарий bash, не имеет расширения.

Другие вопросы по тегам