Как выполнить сценарий удара?

Таким образом, я записал свой первый сценарий удара:

#!/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?

Обновление: Вот хорошее объяснение того, почему и как выполнить сценарий удара.

19
задан 12.12.2009, 22:18

2 ответа

Необходимо сделать исполняемый файл файла. Можно сделать это с

chmod +x <filename>

где название Вашего сценария, и затем необходимо ли предварительно ожидать его с ./ давать оболочке команду петлять в локальном каталоге, как:

./script.sh

Можно только выполнить файлы, которые находятся в Вашем PATH или это Вы указываете путь к ним. ./, локальный каталог, не находится в PATH по умолчанию, потому что кто-то может использовать его в низких целях. Вообразите сценарий названным ls заглядывавший каталог, Вы входите в тот каталог, работаете ls и тот сценарий делает что-то плохо.

В то время как Вы в нем, можно хотеть сделать это более портативным путем выполнения оболочки вместо удара при помощи:

#!/bin/sh

или путем выполнения удара, неважно, где это установлено, пока это установлено:

#!/usr/bin/env bash
28
ответ дан 07.12.2019, 10:18

В дополнение к совету Fernández предшествуйте ему с точкой, как это:

./myscript.sh

Из соображений безопасности текущий каталог никогда не включается в путь выполнения.

1
ответ дан 07.12.2019, 10:18

Теги

Похожие вопросы