Вопрос: Я получаю это сообщение об ошибке:
экспорт: плохой интерпретатор: Никакой такой файл или каталог
когда я выполняю этот сценарий удара:
#!/bin/bash
MONO_PREFIX=/opt/mono-2.6
GNOME_PREFIX=/opt/gnome-2.6
export DYLD_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_PATH
export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=$MONO_PREFIX/include:$GNOME_PREFIX/include
export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal
export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig:$GNOME_PREFIX/lib/pkgconfig
PATH=$MONO_PREFIX/bin:$PATH
PS1="[mono-2.6] \w @ "
Но путь удара, кажется, корректен:
asshat@IS1300:~/sources/mono-2.6# which bash
/bin/bash
asshat@IS1300:~# cd sources/
asshat@IS1300:~/sources# cd mono-2.6/
asshat@IS1300:~/sources/mono-2.6# ./mono-2.6-environment
export: bad interpreter: No such file or directory
asshat@IS1300:~/sources/mono-2.6# ls
download mono-2.4 mono-2.4-environment mono-2.6 mono-2.6-environment
asshat@IS1300:~/sources/mono-2.6# cp mono-2.6-environment mono-2.6-environment.sh
asshat@IS1300:~/sources/mono-2.6# ./mono-2.6-environment.sh
export: bad interpreter: No such file or directory
asshat@IS1300:~/sources/mono-2.6# ls
download mono-2.4-environment mono-2.6-environment
mono-2.4 mono-2.6 mono-2.6-environment.sh
asshat@IS1300:~/sources/mono-2.6# bash mono-2.6-environment
asshat@IS1300:~/sources/mono-2.6#
Что я делаю неправильно? Или действительно ли это - Ясная ошибка Lynx?
Я сделал chmod + x
Первая строка, #! / Bin / bash
, сообщает Linux, где найти интерпретатор. Скрипт также должен исполняться с chmod + x script.sh
, что, похоже, вы и сделали.
Весьма вероятно, что вы создали этот файл с помощью редактора Windows, который поместит
в конце каждой строки. Это стандарт для dos / windows. OS X поместит
в конце каждой строки. Однако в Unix / Linux стандарт просто помещает
в конец строки.
Linux теперь ищет файл с именем / bin / bash
для интерпретации файла,
где
- символ возврата каретки, который является допустимым символом файла в Linux. Такого файла не существует. Отсюда и ошибка.
Решение: Отредактируйте файл в редакторе Linux и избавьтесь от лишних
. При редактировании файла в Windows обычно работает инструмент dos2unix
.
Вы запускали его так (вы упомянули chmod + x)
. /path/to/it
или вот так:
./it
?
У меня есть скрытое подозрение, что ваш код выполняется в новом процессе, и все, что вы ему сказали был потерян. Следовательно, переменные не будут раскрыты в вашей текущей оболочке. Однако это не объясняет обнаруженную вами ошибку неверный интерпретатор . Я думаю, у вас также есть проблема с терминалом (как в терминале, с которым вы разговаривали с cat
).
Тот факт, что в вашем приглашении не было того, что было сказано:
`PS1="[mono-2.6] \w @` "
заставляет меня думать, что вы запустили, а не получили код. Есть разница. Я не мог заставить сломаться то, что вы опубликовали.
Может ли сценарий использовать символы новой строки Dos?
Попробуйте запустить на нем dos2unix.