
저는 Linux 커널, Busybox 및 initrd 이미지의 최소 파일 시스템으로 구성된 임베디드 ARM 장치에 최소 환경을 만들었습니다. 시작 시 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
(유니코드? 아마도 CR/LF가 4비트 왼쪽으로 이동한 것처럼 보이는 것은 우연의 일치일 수도 있습니다. 또한 두 개가 아닌 단일 공백 문자로 나타납니다.) 바로 오류 메시지에서 힌트를 얻을 수 있습니다. 매개변수가 아닌 명령만 표시했어야 했는데 줄에 공백이 전혀 없었습니다.
그것을 발견하고 나니 아마도 그 원인이 무엇인지 깨달았습니다. 내 OS는 Windows 7이고 VirtualBox VM에서 Ubuntu를 실행하고 있으며 공유 클립보드를 사용합니다. Windows 7의 Chrome 웹페이지에서 스크립트를 복사하여 Ubuntu의 gedit에 붙여넣었습니다. 해당 문자는 웹 페이지에서 복사되었거나 페이지에서 gedit로 이동하는 동안 인코딩이 제대로 재생되지 않았습니다.
이를 공백 문자로 바꾸면 해결되었습니다.