У меня создается впечатление это, если я включаю строку
#!/bin/bash
в начале моего файла это будет распознано как скрипт удара, которым я могу запустить только
file.sh
вместо
sh file.sh
Но в моем случае, file.sh
дает что-то как test.sh
дает test.sh: command not found
. Почему это?
ОБНОВЛЕНИЕ
Я замечаю, что должен использовать ./
. Но я думал, что это посмотрит в текущем каталоге так или иначе?
./test.sh
Сначала необходимо удостовериться, что файл является исполняемым файлом:
chmod +x file.sh
И затем выполнять его, любой необходимо поместить его в ПУТЬ, т.е. один из каталогов файлов поиски ОС при поиске файлов для выполнения, с которым можно найти echo $PATH
, или иначе необходимо ввести:
./file.sh
Вместо того, чтобы просто вводить file.sh
.
Можно просто ввести file.sh
, если это находится в Вашем ПУТИ, который я рекомендую. Хорошее место находится в ~/bin
. Создайте ту папку, если это не будет там, и в соответствии с Ubuntu, то будет добавлено к Вашему пути, когда Вы войдете в систему.
Необходимо запустить его с./file.sh, потому что текущий dir не находится в ПУТИ.
Если это не достаточно, becaused Вы отсутствовал, что замечательный предлагает, к chmod a+x
, необходимо запустить программы, начинающиеся с хижины #!/bin/bash
с
bash file.sh
нет
sh file.sh
даже если sh является символьной ссылкой на/bin/bash.
Оболочка проверяет, как она была вызвана и может быть вызвана как sh
для действия в совместимом режиме поэтому это может не обработать некоторый bashisms, который работал бы, если вызвано как bash file.sh
.
Это не было Вашей проблемой, но могло бы стать один, если Вы не знаете их тонкое различие.