상세 컨텐츠

본문 제목

[Bash] $'\r': command not found 오류 해결

#1. Programming/Bash Shell Script

by 김호구 2022. 8. 5. 13:48

본문

리눅스에서 생성한 Bash Shell을 윈도우에서 수정후 실행시 발생 할 수 있는 오류로

$'\r': command not found 또는 /bin/sh^M: bad interpreter 같은 문구가 발생함

원인은 줄 바꿈 처리를 윈도우에선 CRLF (\r\n), 리눅스에선 LF (\n) 를 사용해서 그렇다고 한다.

 

해결방안으로는 터미널에서 sed 명령어를 사용하여 처리하며 명령어는 아래와 같다.

$ sed -i 's\r$//' [대상 파일]

위 방법으로 조치가 되었으며, \r이 모두 치환되어 스크립트가 정상 수행 된다.

 

vi모드에서 치환하는 방법도 존재하며 vi모드에서 아래 명령어를 수행한다.

:%s/^M//g

위에서 ^M는 ^+M 이 아니고 Ctrl + v + m 이다.

 

윈도우에서 Linux파일을 수정 및 업로드할 때 ^M이 발생하지 않는 방법이다.

 

FTP로 업로드 할 때 텍스트 방식 / 2진 방식 선택할 때 텍스트 방식을 사용하며,

이미 업로된 파일에 대해선 파일 형식을 변경한다.

Edit plus 기준 '문서 -> 파일 형식 (CR/LF) -> 파일 형식 변경 -> Unix / Mac 선택'