Ответы:
$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
.