Я столкнулся с проблемой, которая сводит меня с ума. В последние месяцы я разрабатывал проект, основанный на дистрибутиве 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
Где Баш установлен на? –
вы можете выполнить '/ bin/bash -version'. Если нет, то каков результат 'which bash', который выводится на мой linux на'/usr/bin/bash'! У вас есть разрешения на все ваши скрипты? Пожалуйста, добавьте результаты к вашему сообщению, если это возможно ... – Klaus
@ Rowland Shaw: bash установлен в/bin – DavideEB