it-swarm.com.ru

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

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

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

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

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

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

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

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

207
Hagelin

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

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

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

123
mklement0

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

37
svth

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

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

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

 enter image description here

11
wisbucky

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

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

8
Luc-Olivier

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

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

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

chmod u+x filename.sh

 RCDefaultApp pref pane

0
Tomachi