2016-04-15 9 views
0

Я столкнулся с проблемой, которая сводит меня с ума. В последние месяцы я разрабатывал проект, основанный на дистрибутиве Linux (Openwrt), который был недавно обновлен. В моем проекте много скриптов bash, которые всегда отлично работали на моей машине. Сегодня я собрал новую версию Openwrt для своей машины, я установил bash, и скрипты больше не работают. Если я исполню мой сценарий ./myscript.shСценарии Bash не работают. Может быть, проблема EOL?

#!/bin/bash 
echo hello 

я получаю:

-ash: ./myscript.sh: not found 

я заметил две очень странные факты, которые могут помочь вам, ребята, понять, что происходит:

если изменить первую строку от #!/bin/bash до #!/bin/sh скрипт выполнен без ошибок. Однако bash, кажется, правильно установлен. Ниже приведен результат opkg info | grep -A 6 -i bash:

Package: bash Version: 4.3.39-1 Depends: libc, libncurses Status: install user installed Architecture: ramips_24kec Installed-Time: 1460723598 

Если я открываю script.sh в блокноте, конец линии CRLF. Я научился использовать инструмент преобразования EOL для преобразования CRLF в LF. Я сохраняю файл, я его закрываю. Но я не знаю, почему, когда я открываю его снова, конец строки по-прежнему остается CRLF. Это похоже на то, что что-то держит мои скрипты с неправильным концом строки.

Любая помощь будет принята с благодарностью

EDIT

результат ldd /bin/bash является

/lib/ld-uClibc.so.0 (0x55b9b000) 
     libncurses.so.5 => /usr/lib/libncurses.so.5 (0x77d0e000) 
     libdl.so.0 => /lib/ld-uClibc.so.0 (0x55b9b000) 
     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x77ceb000) 
     libc.so.0 => /lib/ld-uClibc.so.0 (0x55b9b000) 
Error relocating /bin/bash: __uClibc_main: symbol not found 
Error relocating /bin/bash: fcntl64: symbol not found 
Error relocating /bin/bash: __fputc_unlocked: symbol not found 
Error relocating /bin/bash: _stdlib_mb_cur_max: symbol not found 
Error relocating /bin/bash: __ctype_b: symbol not found 
Error relocating /bin/bash: __ctype_tolower: symbol not found 
Error relocating /bin/bash: __ctype_toupper: symbol not found 
Error relocating /bin/bash: __stdout: symbol not found 
+0

Где Баш установлен на? –

+0

вы можете выполнить '/ bin/bash -version'. Если нет, то каков результат 'which bash', который выводится на мой linux на'/usr/bin/bash'! У вас есть разрешения на все ваши скрипты? Пожалуйста, добавьте результаты к вашему сообщению, если это возможно ... – Klaus

+0

@ Rowland Shaw: bash установлен в/bin – DavideEB

ответ

0

Попытка с помощью утилиты dos2unix для преобразования конца строки. Когда вы говорите «Блокнот», вы имеете в виду Windows блокнот? Это, вероятно, автоматически преобразует концы строк в формате DOS ...

0

Просто попробуйте это, использование ш вместо Баш

#!/bin/sh 

echo "Hello" 
exit 0 
+0

Кажется, что OP хочет использовать bash. Я не вижу ответа на ваш вопрос. –

+0

Привет, Фредерик, DavideEB хочет запустить скрипт в маршрутизаторе openwrt, а в openwrt bash не установлен. Но вы можете запустить скрипт, используя sh вместо bash, он будет работать как шарм. –

 Смежные вопросы

  • Нет связанных вопросов^_^