기존에 사용하던 쉘 스크립트가 어느날 갑자기 command not found 로 시작하는 오류가 뜨면서 안되면 의심해볼것이 있다
vi -b 스크립트이름 을 치면 각 명령어 끝줄에 ^M 가 박혀있는걸 볼수있다
윈도우에서 파일이 수정되었거나 작성된경우일 확률이 매우높다
그 이유는 dos 와 unix 계열의 개행방식이 다른이 때문인데 각 줄의 마지막에는 개행을 위한 문자가 들어있는데, 윈도우는 CR과 LF를 함께 사용하지만 리눅스는 LF만 사용하기 때문에 문제가 발생한다
여기서 CR은 Carriage Return을 말하며 커서를 제일 앞으로 보내는 역할을 하고 LF는 Line Feed를 말하며 줄바꿈을 의미한다
리눅스에서 작성한 파일을 윈도우에서 메모장으로 열어보면 줄이 전부 붙어있고 대신 문장 끝에 이상한 문자가 보이게 된다
윈도우에서 작성한 파일을 리눅스에서 열어보면 눈에 보이지는 않지만 끝에 CR이 쓸데없이 붙어있어서, Shell 스크립트 파일을 돌리면 오류가 발생한다
해결방법은 여러가지가 있지만 가장 간편한 방법은 다음 명령어를 리눅스 vi에서 적용하면 된다
vi -b 스크립트파일이름 으로 편집창을 연 다음
:%s/^M/ /g 으로 수정해주면 된다
여기서 ^M은 컨트롤+v 와 컨트롤+m 을 누르면 된다