Я только что перешел с Windows на Linux (Ubuntu 18.04) ... и следовал учебнику для изучения сценариев bash ...
Я написал простой сценарий оболочки
#!bin/bash
echo "Hello World"
, но когда я попытался запустить его, используя
$ ./test1.sh
, он выдает ошибку
bash: ./test1.sh: bin/bash: bad interpreter: No such file or directory
Когда я я запускаю его, используя
$ bash test1.sh
, он работает нормально
Я попытался найти его и нашел много ответов, но все покрывает ошибки из-за некоторой разницы между windows newline ^M
и ubuntu newline ... Я попытался открыть его в VIM в двоичном режиме (не знаю, что это такое), но у него не было тега ^M
после bin / bash.
Пожалуйста, подскажите, что я делаю не так.
Вы пропускаете ведущую наклонную черту, делающую хижину полный путь:
#!/bin/bash
# ↑ here
В Вашем случае оболочка, кажется, ищет ./bin/bash
.
Хижина (и также исполняемое разрешение) только принята во внимание, если Вы запускаете скрипт как программу:
$ ./test1.sh
Проигнорировано, выполняете ли Вы непосредственно интерпретатор и предоставляете Ваш сценарий как аргумент:
$ bash test1.sh
См. также: https://askubuntu.com/a/850387/250300
Извините за возрождение старой темы, но у меня была та же проблема, и я смог ее исправить, не уверен, что именно помогло, но сделал все, что перечислено ниже. Прежде всего установите Gedit с помощью команды:
sudo apt-get install gedit
Затем убедитесь, что вы сохранили скрипт с окончанием строки Unix/Linux. После этого введите терминал, находясь в нужной папке:
chmod +x filename
Последнее — заменить в самом скрипте
#!bin/bash
на
#!/bin/bash
Хотя это старый вопрос, поскольку нет объяснения проблемы ^M, возможно, это полезно: