windows에서 작성한 shell파일을 리눅스에 실행하면 오류가 발생할 수 있습니다.
아래와 같은 오류가 발생합니다.
$'\r': command not found
발생 원인은 DOS와 UNIX의 개행 방식이 다르기 때문입니다. 윈도우는 개행 문자를 CR LF를 사용하고 리눅스는 LF를 사용합니다. CR은 Carriage Return으로 커서를 제일 앞으로 이동합니다. LF는 Line Feed로 줄 바꿈을 의미합니다.
정규표현식으로는 각각 \r, \n으로 표현됩니다. 윈도우는 \r\n, 리눅스는 \n입니다.
리눅스에서 쉘 실행 시 '\r': command not found와 같은 오류가 발생하면 다음 명령어를 실행하면 됩니다.
$sed -i -e 's/\r$//' [대상 파일]
위 명령어는 정규 표현식으로 $는 라인 끝을 의미합니다. \r$는 라인 끝에 있는 CR문자를 의미합니다. 반대로 UNIX를 DOS 형태로 변환할 때는 다음 명령어를 실행하면 됩니다.
$sed -i -e 's/$/\r' [대상 파일]
텍스트 에디터에서 바꾸기를 통해서 변경도 가능합니다.
참고
https://www.snoopybox.co.kr/1613
http://sql313.com/index.php/blog/62-using-notepad-to-change-end-of-line-characters