개요

  • 리눅스의 셸 스크립트 파일을 윈도우즈 환경에서 실행하기 위해서 Cygwin과 같은 환경에서 sh 명령으로 실행할 때가 있다.
  • 이 때, 윈도우즈와 리눅스의 개행 문자처리가 다르기 때문에 line 20: $'\r': command not found 와 같은 에러 메세지가 발생하기도 한다.

원인

  • 윈도우즈에서는 개행문자가 CR LF (\r\n)이다. 리눅스에서는 개행문자가 LF (\n)이다.
  • 셸 스크립트는 리눅스 환경을 기준으로 만들었으므로 개행문자가 LF일 것이다.

해결

  • LF인 개행문자를 CR LF로 변환해주면 된다.
  • 윈도우즈 워드패드에서 ‘다른 이름으로 저장’해서 ‘파일 형식’에서 ‘텍스트 문서 - MS-DOS형식’으로 저장하는 방법은 잘 안 동작했다.
  • 여전히 다음과 같은 에러가 출력됐다.
line 20: $'\r': command not found

참고

  • https://www.devkuma.com/docs/windows/windows-unix-end-of-line/#:~:text=%EC%9C%88%EB%8F%84%EC%9A%B0%EC%99%80%20UNIX%20%EA%B3%84%EC%97%B4%EC%9D%98,%EC%A0%91%EA%B7%BC%EC%9D%B4%20%EA%B0%80%EB%8A%A5%ED%95%A0%20%EA%B2%83%20%EA%B0%99%EB%8B%A4.