반응형
0. 개요
/bin/sh^M: bad interpreter: 그런 파일이나 디렉터리가 없습니다 |
쉘 스크립트 작성 후 RHEL 서버에서 실행시키니 상기와 같은 오류가 출력되며 실행이 되지 않는다. 해당 오류를 해결해보도록 한다.
1. 원인
Windows에서 작성한 스크립트 파일을 LINUX로 옮겨 실행하면 발생하는 오류다.
이는 OS별 개행 표현방식이 다르기 때문인데, Windows에서는 CRLF 표현방식을 사용하고, LINUX에서는 LF 표현방식을 사용한다.
# vim -b 스크립트명.sh
확인을 위해 바이너리 모드로 vim
편집기를 실행해 보자.
줄이 바뀌는 부분마다 ^M
이 추가된 것을 확인할 수 있다. 앞서 언급했던 부분에 조금 더 보충설명을 하자면,
- Windows : CRLF 표현방식, 줄바꿈 개행문자
\r\n
사용 - LINUX : LF 표현방식, 줄바꿈 개행문자
\n
서로 표현방식이 상이하므로, Windows에서 작업한 파일을 LINUX로 그대로 전송하게 되면 인식할 수 없어 발생하는 오류가 되겠다.
2. 해결방법
간편하게 vim
편집기에서 해결할 수 있다.
# vim 스크립트명.sh
바이너리 모드가 아닌 평소에 사용하던 일반 모드로 VIM
편집기를 실행후, esc
버튼을 눌러 일반 모드로 전환한다.
- VIM
, VI
편집기 둘다 상관없다.
:set fileformat=unix
:wq
fileformat
을 unix로 설정후 저장한다.
300x250
반응형