본문 바로가기
개발 공부

[개발 공부] env: sh/r: No such file or directory 해결 방법

by 볼링치는 개발자 2021. 9. 23.
반응형

Java 스프링 부트로 개발한 백엔드 프로그램을 배포하기 위해 해당 프로젝트를 빌드해야 했습니다.

 

스프링 부트 프로젝트를 빌드하면, jar 형식의 파일이 나오는데, 그 파일을 배포할 웹 서버에 실행시켜놓으면 내장 톰캣 웹서버로 인해 WAS가 되어 편리한 배포가 가능합니다.

 

해당 프로젝트를 빌드하기 위해 ./gradlew build 명령어를 통해 프로젝트를 빌드했습니다.

env: sh\r: No such file or directory

원래였으면 정상적으로 진행됐을 빌드가 안되고 있었습니다.

 

해당 에러 문으로 구글에 검색을 해보았는데 영어로 된 해결책을 찾게 되어 정리하게 되었습니다.

 

해당 에러 문은 윈도우 OS와 Mac, Unix 등 운영체제의 차이점 때문에 발생되었습니다.

 

윈도우 OS에서는 엔터, 즉 개행 문자를 CRLF(\r\n)로 사용하지만, Unix OS에서는 개행 문자를 LF(\n)로 사용되기 때문입니다.

 

즉, 현재 CRLF 형태로 되어있는 gradlew 파일을 Unix운영체제인 Mac에서 실행하려니 에러가 난 거였습니다.

 

이를 해결하기 위해 여러 해결책을 찾아본 결과 메모장 툴이나 텍스트 편집기를 사용해도 되지만 저는 쉬운 방법을 사용하기 위해 다음과 같은 방법을 사용했습니다.

 

먼저 다음 명령어로 dos2unix을 설치해줍니다.

저는 Mac OS를 사용하기 때문에 brew를 통해 설치해 주었습니다.

$ brew install dos2unix

리눅스 계열 OS를 사용하시면 다음 명령어를 사용하시면 됩니다.

$ sudo yum install -y dos2unix
$ sudo apt-get install dos2unix

그리고 다음 명령어를 통해 gradlew파일을 변환해줍니다.

$ dos2unix gradlew

이제 ./gradlew build 명령어를 통해 빌드를 하면 정상적으로 되는 것을 확인할 수 있습니다.

반응형

댓글