줄 끝에 캐리지 리턴이 포함되어 있으면 bash가 스크립트 실행을 거부하는 것으로 나타났습니다. 이를 관찰하려면 파일을 생성하십시오 hello.sh
.
#!/bin/bash
echo hello
이제 실행 권한을 부여하십시오.
chmod 700 hello.sh
그리고 실행하세요 ./hello.sh
. 완벽하게 작동합니다!
이제 이것을 시도해 보세요:
unix2dos hello.sh
./hello.sh
나는 얻다:
bash: ./hello.sh: cannot execute: required file not found
스크립트를 실행할 수 없는 이유는 무엇입니까?
답변1
좋든 나쁘든 캐리지 리턴은 파일 이름에 유효한 문자입니다. 실제로 쉘은 실행을 시도하는 것이 아니라 /bin/bash
실행을 시도하고 있습니다 /bin/bash^M
. 여기서 ^M
CR 문자는 여기서 나타납니다. 파일이 존재하지 않으므로 쉘이 스크립트를 실행하기 위해 지정된 인터프리터를 찾을 수 없습니다.