Команда в скрипте завершается ошибкой «не найдено», но в командной строке выполняется нормально

Команда в скрипте завершается ошибкой «не найдено», но в командной строке выполняется нормально

Я создал минимальную среду на моем встроенном устройстве ARM, состоящую только из ядра Linux, с Busybox и минимальной файловой системой в образе initrd. У меня есть , inittabкоторый запускается /etc/init.d/rcSпри запуске.

У меня есть следующая строка rcS:

/bin/mount -t proc none /proc

Однако, когда эта строка проходит, я получаю

/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found

Последняя строка, rcSпо-видимому, выполняется — эта строка просто /bin/shполучает оболочку, и оболочка открывается автоматически.

Когда я запускаю ту же самую команду монтирования из оболочки, она работает. /bin/mount— это символическая ссылка на /bin/busybox.

Почему мой скрипт не может найти /bin/mount?

решение1

Как оказалось, пробелы в файле на самом деле были двумя символами 0xD0 0xA0(Unicode? Может быть, это просто совпадение, что они выглядят как CR/LF, сдвинутые влево на 4 бита... Они также отображаются как один пустой символ, а не два). Подсказкой с самого начала стало сообщение об ошибке — оно должно было отображать только команду, а не параметры, но в строке не было ни одного пробела.

Как только я это обнаружил, я понял, в чем, вероятно, причина. Моя ОС — Windows 7, и я запускаю Ubuntu в виртуальной машине VirtualBox, и я использую общий буфер обмена. Я скопировал скрипт с веб-страницы в Chrome на Windows 7 и вставил его в gedit на Ubuntu. Либо эти символы были скопированы с веб-страницы, либо что-то не так с кодировкой на пути от страницы к gedit.

Замена их на пробелы решила проблему.

Связанный контент