Итак, я написал свой первый скрипт bash:
#!/bin/bash
echo 'hello world!'
exit
Я знаю, что он имеет правильное расположение для bash и является исполняемым:
$ which bash
/bin/bash
$ chmod +x myscript.sh
Теперь я хочу запустить его из командной строки, но я получаю сообщение об ошибке:
$ myscript.sh
myscript.sh: command not found
Поэтому вместо этого я пытаюсь это, и это работает:
$ bash myscript.sh
hello world!
Это то, как мне всегда нужно будет это выполнять? Я чувствую, что я выполнил другие сценарии, не имея перед ним bash
. Как я могу запустить myscript.sh без предшествующего ему bash
?
Обновление: вот хорошее объяснение того, почему и как выполнить скрипт bash .
источник
В дополнение к совету Фернандеса, поставьте перед ним точку, например:
По соображениям безопасности текущий каталог никогда не включается в путь выполнения.
источник
Есть 3 способа выполнить скрипт bash. С примером myscript.sh в качестве скрипта, который вы хотите выполнить.
Способ 1
выполнить скрипт как подпроцесс, который вызовет проблемы с правами доступа, если не владелец записи. Вы можете изменить разрешения с помощью chmod.
Способ 2
запустить скрипт как текущий пользователь. если скрипт bash написан хорошо, в нем не должно быть ошибок.
Способ 3
похож на метод 2, но короткий путь. обратите внимание, что это основано на предположении, что вы используете оболочку bash в текущем сеансе.
надеюсь это поможет!:)
источник