El comando en el script falla con el error "no encontrado", pero funciona bien en la línea de comando

El comando en el script falla con el error "no encontrado", pero funciona bien en la línea de comando

Creé un entorno mínimo en mi dispositivo ARM integrado que consta solo del kernel de Linux y con Busybox y un sistema de archivos mínimo en una imagen initrd. Tengo uno inittabque se ejecuta /etc/init.d/rcSal iniciar.

Tengo la siguiente línea en rcS:

/bin/mount -t proc none /proc

Sin embargo, cuando se ejecuta esta línea, aparece

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

La última línea de rcSparece ejecutarse; esa línea es simplemente /bin/shpara obtener un shell, y el shell se abre automáticamente.

Cuando ejecuto exactamente el mismo comando de montaje desde el shell, funciona. /bin/mountes un enlace simbólico a /bin/busybox.

¿Por qué mi secuencia de comandos no puede encontrar /bin/mount?

Respuesta1

Resulta que los espacios en el archivo eran en realidad dos caracteres 0xD0 0xA0(¿Unicode? Tal vez sea solo una coincidencia que parezcan CR/LF desplazados a la izquierda 4 bits... También aparecen como un solo carácter en blanco, no dos). Una pista desde el principio fue el mensaje de error: solo debería haber mostrado el comando, no los parámetros, pero no había ningún espacio en blanco en la línea.

Una vez que descubrí eso, me di cuenta de cuál era probablemente la causa. Mi sistema operativo es Windows 7, estoy ejecutando Ubuntu en una máquina virtual VirtualBox y uso un portapapeles compartido. Copié el script de una página web en Chrome en Windows 7 y lo pegué en gedit en Ubuntu. O esos caracteres fueron copiados de la página web o algo no funcionó bien con la codificación en el camino de la página a gedit.

Reemplazar aquellos con caracteres de espacio lo resolvió.

información relacionada