Windows 줄바꿈 형식(CRLF)으로 인해 Linux에서 스크립트 실행 시 문제가 발생하는 상황에 대한 해결 방법

1–2분

Linux에서 아래와 같은 오류 메시지가 발생했다면:

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

이는 스크립트 파일이 Windows 형식의 줄바꿈(CRLF)을 사용했기 때문입니다. Linux는 Unix 형식의 줄바꿈(LF)을 필요로 하므로, 파일 형식을 수정해야 합니다.

아래는 이 문제를 해결하기 위한 여러 방법들입니다.


1. dos2unix 명령어 사용

Linux에서 Windows 형식의 줄바꿈을 Unix 형식으로 변환하는 가장 간단한 방법은 dos2unix 명령어를 사용하는 것입니다.

명령어:

sudo apt install dos2unix  # Ubuntu/Debian 계열에서 설치
sudo yum install dos2unix  # RHEL/Rocky Linux/CentOS 계열에서 설치

dos2unix helmfile_install.sh  # 파일 변환

이 명령어는 파일 내용을 직접 수정하지 않아도 줄바꿈 문제를 빠르게 해결할 수 있습니다.


2. sed 명령어 사용

sed 명령어를 사용하여 파일 내의 Windows 스타일 줄바꿈(CRLF)을 Unix 스타일 줄바꿈(LF)으로 변환할 수 있습니다.

명령어:

sed -i 's/\\r//' helmfile_install.sh

  • \\r: Windows 줄바꿈의 캐리지 리턴(Carriage Return) 부분을 의미합니다.
  • i: 파일을 직접 수정합니다.

이 방법은 별도의 패키지 설치 없이 기본적으로 사용할 수 있습니다.


3. 텍스트 편집기에서 수정

(1) Vim을 사용

  1. 파일을 열고: vim helmfile_install.sh
  2. 다음 명령을 입력하여 파일 형식을 Unix로 변경: :set ff=uni
  3. 저장 후 종료: :wq

(2) VS Code 또는 Notepad++ 사용

  • 파일을 Windows 환경에서 열고, 줄바꿈 설정을 Unix(LF)로 변경한 후 저장합니다:
    • VS Code: 오른쪽 하단의 CRLF를 클릭 → LF 선택
    • Notepad++: Edit > EOL Conversion > Unix (LF) 선택 후 저장

4. 새 파일 생성 후 내용 복사

아래 명령어를 사용하여 새 파일을 생성하고, 원본 파일의 내용을 복사해도 문제를 해결할 수 있습니다:

cat helmfile_install.sh > temp.sh
mv temp.sh helmfile_install.sh
chmod +x helmfile_install.sh


요약

Windows에서 작성된 스크립트를 Linux에서 실행하려면 파일의 줄바꿈 형식을 Unix 형식(LF)으로 변경해야 합니다. 가장 추천하는 방법은 dos2unix 명령어를 사용하는 것입니다. 추가적으로, Vim이나 VS Code를 이용한 수동 수정도 유용할 수 있습니다.