Bash가 캐리지 리턴이 있는 스크립트를 실행하지 않는 이유는 무엇입니까?

Bash가 캐리지 리턴이 있는 스크립트를 실행하지 않는 이유는 무엇입니까?

줄 끝에 캐리지 리턴이 포함되어 있으면 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. 여기서 ^MCR 문자는 여기서 나타납니다. 파일이 존재하지 않으므로 쉘이 스크립트를 실행하기 위해 지정된 인터프리터를 찾을 수 없습니다.

관련 정보