less than 1 minute read

이번에는 LINUX 환경에서 shell script 를 실행할 때 발생하는 ^M bad interpreter 에러 해결 방법에 대해서 알아보도록 하겠습니다.

이 포스트를 작성하게 된 이유는 회사에서 간단한 동작을 하는 shell script 를 만들고 PC에서 만든 이후에 서버에 적용하였더니 ^M bad interpreter 에러가 발생하였고, 이에 대해서 정리를 해놓으면 좋을 것 같아서 포스트를 작성하게 되었습니다.

1. 개요

test.sh 라는 shell script 를 윈도우 환경인 PC에서 작성 후에 리눅스 서버에서 실행하였을 때 다음과 같은 에러 메시지가 발생하였습니다.

$ ./test.sh
bash: ./test.sh: /bin/bash^M: bad interpreter: 그런 파일이나 디렉터리가 없습니다

2. 원인

원인에 대해서 구글링을 해보았습니다.
원인은 윈도우 환경에서 만들어진 파일은 파일의 마지막에 ^M 가 들어가는 것이 linux 와 달라 에러가 발생하였습니다.

3. 해결 방법

해결 방법으로는 linux 에서 파일 포맷을 바꿔주는 것으로 이 방법을 적용하기 전에는 vi가 먼저 설치가 되어 있어야 합니다.

vi 편집기로 shell script 파일을 연 후에 :set fileformat=unix 명령어를 실행하고 저장합니다.

$vi test.sh
:set fileformat=unix
:wq!

4. 출처

https://stackoverflow.com/questions/2920416/configure-bin-shm-bad-interpreter
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=muri1004&logNo=220690434778

5. 마치며

오늘은 linux 환경에서 ^M bad interpreter 에러에 대해서 알아보았습니다. 제가 작성한 포스트가 다른분에게도 도움이 되었으면 좋겠고, 오타나 잘못된 내용이 있다면 언제든지 댓글로 작성해 주시기 바랍니다. 포스트 읽어주셔서 감사합니다!

Comments