스크립트의 명령이 "찾을 수 없음" 오류로 인해 실패하지만 명령줄에서는 정상적으로 실행됩니다.

스크립트의 명령이 "찾을 수 없음" 오류로 인해 실패하지만 명령줄에서는 정상적으로 실행됩니다.

저는 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로 이동하는 동안 인코딩이 제대로 재생되지 않았습니다.

이를 공백 문자로 바꾸면 해결되었습니다.

관련 정보