Projects/Team project - ShellWe

./gradlew: /bin/sh^M: bad interpreter: No such file or directory

마손리 2023. 7. 21. 22:46

문제 발단

깃헙 Actions자동 배포화를 진행하던 중 아래와 같은 에러가 발생했다.

 

 

문제 해결 시도

처음에는 gradlew 파일을 못찾는건가 싶어 빌드 이전 같은 디렉토리에서 'ls' 명령어를 실행하도록 해봤는데 분명 해당 디렉토리에 gradlew 파일이 존재했다.

 

결국 구글에 검색해보니...(그냥 구글이 답이다 고집부리지말고 검색하자) 

/bin/sh^M: bad interpreter: No such file or directory 에러는 윈도우에서 쉘스크립트 파일을 작성하게되면 줄바꿈시 "^M" 문자가 들어가는데 이때문에 생긴 에러라고 한다.

실제로 "vi -b gradlew" 명령어(vi 편집기의 바이너리 모드로 gradlew에 접근)를 통해 gradlew 파일에 접근해보니 줄바꿈이 이루어진 곳에 모두 "^M"이 입력된것을 볼수 있었다.

 

자... 이제 모든 "^M"을 지워줘야 되는데...당연히 하나하나 지워줄순 없으므로 치환 명령어를 입력!

 

seb -i 's/\r//' gradlew  

위와 같이 입력하면 gradlew 파일이 치환된다고 한다.

이후 다시 'vi -b gradlew'로 확인해보면 깔끔해진 파일을 확인할 수 있다.

 

 

이후 정상 작동하는 깃헙 Actions

(로컬에서 seb -i 's/\r//' gradlew 명령어를 입력하여 치환하기 전에 스크립트 파일을 통해 깃헙 Actions에서 자동으로 실행되게끔 해주었다. 정상 작동 확인 후 로컬의 gradlew를 직접 치환해 준뒤 다시 push하여 자동 배포 진행)

 

그런데 말입니다...

다른 팀원이 같은 Actions를 통해 다른 어플리케이션을 빌드할때는 정상 작동했는데 왜 내가 할때만 이랬던 걸까... 분명 그분 파일도 "^M"코드가 가득했는데...