본문 바로가기

컴퓨터공학(CS)

shell,linux,aix)bad interpreter no such file or directory 해결법

리눅스나 유닉스에서 .sh 파일을 실행할때 가끔 일어나는 오류이다. MS 윈도우 시스템에서 작성된 파일을 유닉스 시스템의 vim에서 열면 

예시 스크립트(.sh 파일)

여는법: vi -b test.sh(예시)

            

 

위와 같이 ^M 문자가 함께 찍혀 나온다. 이런 현상이 일어나는 이유는 MS의 개행문자는 \r\n인데 유닉스(리눅스) 계열은 \n 이기 때문이다. 다시 말해 윈도우에서 만든 스크립트 파일이 리눅스나 유닉스에서 열리며 일어나는 문제인데 해결법은 간단하다

 

파일이 열린 상태에서 :%s/^M//g 를 입력해주고 엔터치면 ^M 이 사라진다. 그리고 wq 엔터치면 끝~!

 

여기서 제일 중요한 포인트는 ^M은 쉬프트6 쉬프트M 이 아니다. ctrl V(^) ctrl M(M)이다 .

 


만약 당신이 작업환경은 윈도우, 서버는 리눅스(유닉스)인 사람이라면 이런일이 자주 일어날 것이다. 아마 git에서 클론해온 파일들 중에 있는 스크립트가 괴롭히고 있는 것이지 않을까 싶다.(여러 os를 사용하지 않으면 절대 일어나지 않을 일이다) 그런 사람들을 위해서 git에선 옵션을 제공하고 있다. 아래 링크를 보고 autocrlf 관련 옵션을 조정해보는 것을 추천한다.

 

참고:https://director-joe.kr/89