본문 바로가기
백엔드/Linux

Linux에서 Shell Script를 실행 할때, “/bin/bash^M: bad interpreter: No such file or directory" 오류 발생

by david100gom 2024. 8. 21.

원인 : 

1. Windows에서 작성한 Script를 Linux에서 바로 실행 하려고 하면 나타나는 현상인데, Windows와 Linux의 개행문자를 표현 하는 방식이 다르기 때문. Windows에서는 CRLF(\r\n)으로 표현하는데 그 의미는 다음과 같다. CR(Carriage Return, \r)은 새로운 행을 추가하고 LF(Line Feed, \n)는 시작위치로 돌아간다는 의미이다. 반면에, Linux에서는 LF(\n)으로만 표현하도록 되어 있다.

2. docker container를 생성해서 내부에서 cron을 통해 간단한 echo 스크립트를 실행시키는 내용이었는데, cron이 동작하지 않았다. 원인은 windows에서 작성한 파일의 개행문자가 LF(Line Feed)가 아닌 CRLF(Carriage Return Line Feed)였기 때문

해결 : 
1. shell script intellij 에디터에서 Line separator 설정을 LF로 바꿔주면 된다.
2. sed 's/^M//g' 파일명 명령어로 직접 수정한다.

참고 : docker 배포후 sh 파일을 찾지 못하는 문제가 발생한다면,  개행문자를 의심해야 함.

 

'백엔드 > Linux' 카테고리의 다른 글

du -h --max-depth=1  (0) 2023.04.04
용량 큰 파일/디렉토리 검색  (0) 2023.01.12
vi 에디터에서 문자열 치환  (0) 2021.10.15
systemctl 명령어  (0) 2020.12.19
네트워크 OSI 7계층  (0) 2020.11.01
Red Hat 7.x htop 설치  (0) 2020.10.11
^M 제거  (0) 2019.09.26
리눅스 메모리 사용률 확인 / 버퍼와 캐시  (0) 2019.09.26

댓글