LINUX.ORG.RU
ФорумAdmin

Не работает bash в Mandriva 2006


0

0

Прошу уважаемых гуру помочь со странной ошибкой, которую мне выдает недавно установленная на одну из машин Mandriva 2006. При попытке запуска скриптов (из Konsole, KDE 3.4):
1. на строчку #!/bin/bash ругается: bad interpreter: No such file or directory
2. при удалении из файла скрипта этой строчки выполняет, но не все команды.
Привожу распечатку при ошибке выполения элементарного скрипта:

[dmitry@localhost b2]$ echo $SHELL
/bin/bash
[dmitry@localhost b2]$ whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.bz2
[dmitry@localhost b2]$ ls -l
итого 4 -rwxrwxr-x 1 dmitry dmitry 76 Июн 2 17:18 s1.sh*
[dmitry@localhost b2]$ cat s1.sh
#!/bin/bash
echo 'test only'
for i in 1 2 3 4 5 do
echo "$i"
done
[dmitry@localhost b2]$ ./s1.sh
: bad interpreter: No such file or directory
[dmitry@localhost b2]$ cat s1.sh
echo 'test only'
for i in 1 2 3 4 5 do
echo "$i"
done
[dmitry@localhost b2]$ ./s1.sh
test only
./s1.sh: line 6: syntax error: unexpected end of file

В Mandrake 9.1, который пока еще стоИт на других машинах, все это работает без проблем.
Помогите, пожалуйста, понять и устранить причину. Заранее благодарен.


echo 'test only' for i in 1 2 3 4 5; do echo "$i" done;

наверно нужно немного поправить синтаксис , например ";" расставить как у меня . а может быть даже добавить пустую строку в конец файла.

anonymous
()
Ответ на: комментарий от anonymous

Форматирование слетело

echo 'test only' for i in 1 2 3 4 5; do echo "$i" done; наверно нужно немного поправить синтаксис , например ";" расставить как у меня . а может быть даже добавить пустую строку в конец файла

anonymous
()
Ответ на: комментарий от anonymous

Увы, это не помогло, при расстановке ";" и добавлении пустой строки выдает следующее:

[dmitry@localhost b2]$ ./s1.sh
test only
'/s1.sh: line 2: syntax error near unexpected token `
'/s1.sh: line 2: `for i in 1 2 3 4 5;

Для меня самое непонятное заключается в том, что bash _действительно_ находится в /bin/bash (что подтверждает вывод команты whereis bash - см. в листинге выше), в качестве оболочки по умолчанию тоже установлен bash (также см. листинг), - самое главное! - в Mandrake 9.1 все эти скрипты работали без проблем! Вряд ли они поменяли синтакс столь кардинально.

sinai
() автор топика
Ответ на: комментарий от sinai

Еще одно наблюдение: при наборе в командной строке все работает без проблем:

[dmitry@localhost ~]$ for i in 1 2 3 4 5; do echo "$i"; done
1
2
3
4
5

Значит, проблема в том, что в начале файла процессор "не понимает" (?!) команды #!/bin/bash ?

sinai
() автор топика
Ответ на: комментарий от sinai

Ответ найден. Спасибо Fatal с www.nixp.ru!

Я набирал файл в редакторе, в котором было выставлено "Конец строки -> DOS/Windows" (недавно пришлось править файл для офтопа, и редактор, оказывается, сохранил настройку глобально). Выставив "Конец строки -> UNIX" я получил полностью работоспособный файл скрипта.

Спасибо всем отозвавшимся на мой вопрос!

ЗЫ. Вот так нам мешает жить оффтоп. :-) И собственная невнимательность. :-)

sinai
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.