생계유지형 개발자/Stack Over Flow 한국판
[Linux] /bin/sh^M: bad interpreter: No such file or directory
이 가을
2020. 8. 12. 12:04
# 오류
/bin/sh^M: bad interpreter: No such file or directory
xcode에서 ios 앱 빌드하면서 발생한 오류지만 사실상 Linux 실행오류이다.
아래쪽에 빨간색 영역에 있는 메세지 중에서 /Users/user/...../Pods-MobileConnect-frameworks.sh 파일이 문제이다.
# 원인
이는 십중 팔구 윈도우에서 작성한 스크립트 파일을 Linux (필자는 Mac)에서 실행했기 때문에 나타나는 오류이다.
파일 내용 중 라인 끝에 있는 개행문자가 달라서 발생하는 문제인데 /bin/sh^M 이라는 오류 문구에 나와있듯이 ^M 문자 때문에 발생하는 오류이다.
문제가 발생하는 스크립트 파일에서 ^M 이라는 문자를 모두 지워야 한다.
# 해결
1) 바이너리 모드로 열어서 치환
# 파일열기
$ vi -b 파일명.sh
# 파일 내 존재하는 모든 ^M을 빈값으로 치환.
# 중요! ^+M 이 아니라 Ctrl+v+m으로 입력해야 한다.
:%s/^M//g
# 저장 및 vim 닫기
:wq!
2) 커맨드 화면에서 치환
# sed 명령어 사용하여 치환
sed 's/^M//g' < 파일명.sh
(!) 중요
치환하는 명령어를 입력할 때 ^M은 일반 문자가 아니기 때문에 ^+M을 입력하는게 아니라 Ctrl+v+m을 입력하면 ^M이 입력된다.
※ 참고
https://blog.gaerae.com/2016/02/remove-m-character-from-log-files.html