Ответы:
$prompt: /path/to/scriptи нажмите Enter. Обратите внимание, что вам необходимо убедиться, что у сценария есть разрешения на выполнение.
/path/to каталоге, например, с помощью cd /path/toкоманды, вы можете ввести ./scriptдля запуска вашего скрипта. Не забудьте, в этом случае './' перед 'скриптом'
Еще один способ выполнить его (на этот раз без установки разрешений на выполнение):
bash /path/to/scriptname
cd в каталог, содержащий сценарий, или поместите его в папку bin, которая находится в вашем $ PATH
затем введите
./scriptname.sh
если в том же каталоге или
scriptname.sh
если он находится в папке bin.
./scriptname.shу меня работает, но scriptname.shдает scriptname.sh: command not found. -rwxr-xr-xэто его разрешения.
cdкуда угодно ведет к еще одному распространенному недоразумению новичков. Если внутри скрипта нет зависимостей, которые требуют его запуска в определенном каталоге (например, необходимость читать файл данных, на который скрипт необъяснимо не дает возможности указать), вам никогда не понадобится cdнигде для его запуска, и очень часто не захочется.
Вы могли сделать:
sh scriptname.sh
shэто символическая ссылка bashили если в сценарии не используются какие-либо конструкции, специфичные для Bash. В первом случае использование bashвместо shявляется единственным правильным переносимым решением; в последнем случае это неправильный ответ на этот конкретный вопрос, потому что OP спрашивал о совете специально для сценария Bash. Совершение неправильного ответа безответственно; пользователи, которые не понимают разницы, часто пишут здесь, и им нужно показать, почему этот ответ «сработал для меня» не сработал для них.
Во-первых, вы должны сделать его исполняемым, используя: chmod +x name_of_your_file_script .
После того, как вы сделали его исполняемым, вы можете запустить его, используя ./same_name_of_your_file_script
Измените свой каталог туда, где находится скрипт , используя cd команду
Затем введите
bash program-name.sh
cd; в качестве аргумента вы можете указать произвольно сложный путь bash; действительно, любая программа, которая принимает аргумент имени файла, работает таким образом (или ужасающе, ошеломляюще сломана).
Это старая ветка, но я наткнулся на нее, и я удивлен, что никто еще не дал полного ответа. Итак, начнем ...
В: Как мне выполнить это в Терминале?
Заблуждения и конфликты:
sudoничего этого делать. Эта команда зарезервирована для выполнения команд от имени другого пользователя или пользователя «root» (администратора). Отличный пост здесь .(Человек, который только учится выполнять скрипты, не должен использовать эту команду, если в этом нет реальной необходимости, например, при установке новой программы. Хорошее место для размещения ваших скриптов находится в папке ~ / bin. Вы можете добраться туда с помощью набрав cd ~/binили cd $HOME/binв командной строке терминала. У вас будут все разрешения в этой папке.)
Чтобы «выполнить этот сценарий» из терминала в системе типа Unix / Linux, вы должны сделать три вещи:
Сообщите системе расположение сценария. (Выбери один)
/path/to/script.sh). Вы можете проверить полный путь, набрав pwdилиecho $PWD в терминале../в качестве пути (например ./script.sh). Легко.PATHи просто введите имя (например script.sh). Вы можете проверить систему PATH, набрав echo $PATHили, echo -e ${PATH//:/\\n}если вам нужен более аккуратный список.Сообщите системе, что у сценария есть разрешение на выполнение. (Выбери один)
chmod +x /path/to/script.shв терминале.chmod 755 /path/to/script.shесли предпочитаете числа. Существует большое обсуждение с прохладным графиком здесь .Сообщите системе тип сценария. (Выбери один)
BASH /path/to/script.shилиPHP /path/to/script.php ) Если у сценария есть расширение, такое как .php или .py, оно является частью имени сценария, и вы должны включить его.#!/bin/bash) в вашем примере. Если это первая строка вашего скрипта, система будет использовать эту программу для выполнения скрипта. Нет необходимости набирать программы или использовать расширения.PATHсписке, используя, #!/usr/bin/envа затем имя программы (например, #!/usr/bin/env bashили #!/usr/bin/env python3). Есть плюсы и минусы , как тщательно обсуждается здесь .script.shи script.phpявляются буквальными именами файлов этих сценариев, и что если вы добавите расширение в имя файла, вам нужно будет включить его при запуске сценария (и наоборот; если сценарий не нет расширения, не ставьте его). Это не похоже на, например, DOS, где вы могли опустить .batили в .exeимени файла, а файлы должны были иметь расширение из небольшого набора, чтобы считаться исполняемыми.
Если вы находитесь в каталоге или папке, где доступен файл сценария, просто измените права доступа к файлу в исполняемом режиме, выполнив
chmod +x your_filename.sh
После этого вы запустите сценарий, используя следующую команду.
$ sudo ./your_filename.sh
Над "." представляют текущий каталог. Заметка! Если вы не находитесь в каталоге, в котором находится файл сценария bash, вы меняете каталог, в котором находится файл, используя
cd Directory_name/write the complete path
команда. В противном случае ваш скрипт не сможет работать.
sudoэто неправильно и потенциально ужасно неправильно, если вы используете его в ненадежном скрипте, который злоупотребляет полномочиями, которые вы ему без надобности дали.
cdкуда-то непонятен, но, вероятно, тоже неверен.
chmod +x scriptnameа потом./scriptname.