Как запустить файл .sh или .command в Терминале

87

Я всегда хотел иметь возможность запустить скрипт, который я скачал онлайн прямо из Finder, но двойной щелчок по файлу не работает.

Maximus
источник

Ответы:

103

Откройте терминал, введите sh /path/to/fileи нажмите Enter.

Быстрее ввести shи пробел, а затем перетащить файл в окно и выпустить значок в любом месте окна.

Maximus
источник
3
Как вы думаете, что произойдет, если скрипт оболочки написан в синтаксисе другой оболочки, такой как tcsh, zsh или ksh? Суффикс shобозначает сценарий оболочки, а не «запускайте сценарий в этой оболочке».
fd0
3
@ fd0 Об этом позаботится линия Шебанга .
user14492
4
@ user14492- При вызове сценария оболочки shell shell_scriptстрока shebang игнорируется. Оболочка читает первую строку как комментарий.
fd0
@ fd0, я не понимаю. Чем sh /path/to/fileсемантически отличается от альтернативы /path/to/file.sh?
Pacerier
2
@ Pacerier - в первой форме вызывающий пользователь должен иметь возможность прочитать файл и выбрать, какой интерпретатор будет читать файл. Во второй форме права доступа к файлу должны быть прочитаны и выполнены для вызывающего пользователя, а интерпретатор определяется по хешу в первой строке скрипта. В обоих случаях ядро ​​не интерпретирует суффикс файла.
fd0
12

В качестве альтернативы, вы также можете сделать

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

который также запустит исполняемый файл с указанной оболочкой (если указан в shebang #!/bin/(shell)

perhapsmaybeharry
источник
1
В вопросе написано «запустите скрипт, который я скачал онлайн». Для файлов, загружаемых из Интернета, разрешения обычно
равны
@patrix Я думаю, что это не просто Интернет, но каждый файл, который копируется из другой файловой системы в вашу из-за маски по умолчанию в вашей учетной записи.
rwenz3l
9
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

отредактируйте ~/.bash_profileи добавьте следующую строку:

alias myfile=./myfile.sh

выполнить следующую командную строку:

source ~/.bash_profile

тогда вы сможете запустить свой файл как программу

$ myfile

Реза Фарши
источник
в Ubuntu любой скрипт на вашем пути может выполняться столько, сколько у вас есть #~/bin/sh, в то время как в OSXскрипте должно быть .shрасширение и a aliasдля каждого из них. : -O
Фабрицио Бертольо
6

Выполните следующие шаги для запуска файлов сценария:

  1. Щелкните правой кнопкой мыши на файле .sh.

  2. Наведите курсор на Open With .

  3. Выберите Другие ... .

  4. Вы должны быть в папке Приложения . Откройте папку Utilities и выберите Terminal.app.

  5. Если вы не можете выбрать Terminal.app, измените включенные приложения с Рекомендуемые приложения на Все приложения . Это в нижней части окна.

  6. Если вы хотите открыть каждый .shфайл с помощью Terminal.app, установите флажок Всегда открывать с помощью .

  7. Нажмите кнопку Открыть в правом нижнем углу окна.

stwykd
источник
3

Причина, по которой он не работает после загрузки, заключается в том, что права доступа к файлам не позволяют это сделать. Чтобы включить разрешения на выполнение, откройте Терминал и введите chmod 755 /path/to/script. Вместо того, чтобы вводить полный путь, вы можете перетащить скрипт в окно терминала из Finder. Затем, чтобы выполнить, просто введите /path/to/script. Опять же, вы можете перетащить файл в окно терминала. Этот синтаксис должен выполнять скрипт, используя правильную оболочку, как определено в первой строке скрипта.

Elliott
источник
Мой файл .sh открывается в текстовом редакторе, с которым я создал файл. Как я могу открыть его в Терминале? Я установил правильные разрешения.
Барта
@bart вам нужно добавить расширение .command для непосредственного выполнения скрипта в Finder.
rwenz3l