리눅스에서 sh 파일을 실행할때 가끔 다음과 같은 에러가 발생하는 경우가 있다.
- /bin/bash^M: bad interpreter: No such file or directory
VI로 확인을 해보아도 스크립트내용은 이상이 없는데, 다음 명령어로 해당 sh 파일을 열어보도록 하자.
- vi -b <file>
확인을 해보면 개행마다 ^M이라는 이상한 문자가 붙어있는 것을 볼 수 있다.
원인으로는 이 파일이 아마도 윈도우즈에서 생성되어서 개행마다 carriage return character 인 "^M"이 붙어서 리눅스에서 실행시 에러를 낸다.
참고로 윈도우즈의 개행은 CR LF 이고, 리눅스에서는 LF 이다.
- CR (carriage return)
- LF (line feed)
위의 해결책은 vi -b 로 진입하여 CR에 해당하는 "^M" 문자를 모두 삭제하거나, 리눅스에서 새로 파일을 만들어 작성하여 실행하면 제대로 동작한다.
vi 에서 수정시에는 다음을 참고한다.
- :%s/^M$//
- 참고로 ^M 문자는 Ctrl + V, Ctrl + M을 차례로 누르면 된다.
'OS > Linux' 카테고리의 다른 글
[Ubuntu] apt-get 수행시 Bad header line 에러가 발생하는 경우 (0) | 2016.01.06 |
---|---|
Bash Strict Mode (0) | 2016.01.03 |
[Ubuntu] Dash home에서 불필요한 프로그램 shortcut 삭제 (0) | 2015.12.24 |
[Shell] Bash shell 팁 (0) | 2015.12.20 |
[Ubuntu] time (0) | 2015.12.20 |