У меня есть простой сценарий оболочки:
#!/bin/bash
var="foo"
echo $var
Когда я запускаю его, используя sh shell.sh
(имя файла - shell
), я получаю следующую ошибку:
: not found: 2: shell.sh:
Что это значит?
Вы пробовали sh ./shell.sh
вместо sh shell.sh
?
(из соображений безопасности текущий каталог .
НИКОГДА в ПУТИ не доступен)
Также первая строка в Ваш сценарий #!/bin/bash
необходим только в том случае, если сценарий запускается сам по себе,
, как ./shell.sh
(в этом случае не забудьте выполнить chmod a+x shell.sh
)
Наконец, sh
команда вызывает оболочку dash, а не оболочку bash, поэтому было бы целесообразно вызывать сценарии bash, например bash ./shell.sh
вместо sh ./shell.sh
. Будьте внимательны с окончаниями строк:
Bash делает не принимать \ r \ n (CRLF) в качестве окончания строки (в стиле windows).
Только \ n (LF) разрешено.