Таким образом, я записал свой первый сценарий удара:
#!/bin/bash
echo 'hello world!'
exit
Я знаю, что это имеет правильное расположение для избиения и является исполняемым файлом:
$ which bash
/bin/bash
$ chmod +x myscript.sh
Теперь я хочу выполнить его из командной строки, но я получаю ошибку:
$ myscript.sh
myscript.sh: command not found
Так вместо этого я пробую это, и это работает:
$ bash myscript.sh
hello world!
Это то, как я должен буду всегда выполнять его? Я чувствую, что выполнил другие сценарии, не имея необходимость предшествовать ему с bash
. Как я могу выполнить myscript.sh, не имея необходимость предшествовать ему с bash
?
Обновление: Вот хорошее объяснение того, почему и как выполнить сценарий удара.
Необходимо сделать исполняемый файл файла. Можно сделать это с
chmod +x <filename>
где название Вашего сценария, и затем необходимо ли предварительно ожидать его с ./
давать оболочке команду петлять в локальном каталоге, как:
./script.sh
Можно только выполнить файлы, которые находятся в Вашем PATH
или это Вы указываете путь к ним. ./
, локальный каталог, не находится в PATH
по умолчанию, потому что кто-то может использовать его в низких целях. Вообразите сценарий названным ls
заглядывавший каталог, Вы входите в тот каталог, работаете ls
и тот сценарий делает что-то плохо.
В то время как Вы в нем, можно хотеть сделать это более портативным путем выполнения оболочки вместо удара при помощи:
#!/bin/sh
или путем выполнения удара, неважно, где это установлено, пока это установлено:
#!/usr/bin/env bash