맥 터미널 줄바꿈 설정 방법, 터미널에서 echo 명령어를 실행했는데 줄바꿈이 안 보여서 로그가 한 줄로 엉키는 상황이라면 당황스러울 수밖에 없습니다. 이 문제는 주로 쉘 설정 파일에서 프롬프트 형식이 잘못 지정되었거나, 명령어 실행 결과의 구분자가 시스템 기본값과 맞지 않아 발생합니다. 이 글에서는 실제 발생한 세 가지 사례를 바탕으로 맥 터미널 줄바꿈 설정 방법을 단계별로 정리하여 명령줄 인터페이스를 깔끔하게 복구하는 구체적인 해결책을 제공합니다.
함께 보면 좋은 글: 터미널로 파일 다운 안 될 때 — 맥 터미널 다운방법
- 프롬프트 변수(PS1)의 제어 문자 미포함으로 인한 줄바꿈 깨짐 현상 해결
- echo 명령어와 printf 명령어의 개행 문자 처리 차이점 이해
- Zsh 쉘 환경설정 파일(.zshrc) 수정을 통한 근본적 해결
맥 터미널에서 줄바꿈이 안 될 때, 기본 설정 변경과 프로파일 수정을 통해 3분 이내에 문제를 완전히 해결할 수 있습니다.
사례 1: 프롬프트 색상 설정 후 줄바꿈이 깨지는 현상
첫 번째 사례는 사용자가 터미널의 가독성을 높이기 위해 프롬프트에 색상을 입히려고 시도하면서 발생했습니다. 이 사용자는 .zshrc 파일을 열어 PS1 변수를 수정했습니다. 그러나 명령어를 입력하고 실행한 뒤 다음 줄로 넘어가지 않고, 입력 프롬프트가 출력 결과 위에 겹쳐서 나타나는 현상이 발생했습니다. 텍스트가 서로 덮어써지면서 내용을 읽을 수 없는 상태가 된 것입니다.
이 문제는 터미널이 화면의 줄바꿈 지점을 계산할 때, 색상을 지정하는 이스케이프 시퀀스(예: \033[0;31m)를 문자 길이로 포함하기 때문에 발생합니다. 터미널 입장에서는 눈에 보이지 않는 제어 문자도 길이로 인식하여, 화면 오른쪽 끝에 도달하기도 전에 줄을 넘겨버리거나, 반대로 넘어가야 할 시점에 넘어가지 못하는 것입니다. Apple 개발자 문서에서도 터미널 에뮬레이터는 제어 문자의 길이를 0으로 처리해야 한다고 명시하고 있어, 사용자가 이를 감싸주는 대괄호 표기(\[와 \] 또는 Zsh의 %{와 %})를 사용하지 않으면 화면 렌더링이 꼬이게 됩니다.
macOS Sequoia 15.0을 포함한 최신 macOS에서 기본 쉘인 Zsh를 사용할 때는 색상 코드 등 비출력 문자를
%{와 %}로 감싸야 터미널이 길이를 정확히 계산할 수 있습니다.
사용자는 export PS1="\e[0;31m\u@\h \w$ \e[0m "와 같이 설정했는데, 이를 export PS1="%{%F{red}%}%n@%m %1~ %# %{%f%}" 형태로 Zsh 스타일에 맞게 수정함으로써 문제를 해결했습니다. 이렇게 하면 터미널은 색상 코드를 화면 너비 계산에서 제외하여 정확한 위치에서 줄바꿈을 수행합니다.
Photo by Godfrey Atima on Pexels
사례 2: 윈도우에서 작성한 스크립트 실행 시 개행 오류
두 번째 사례는 협업 환경에서 자주 발생합니다. 맥 사용자가 윈도우 사용자로부터 받은 쉘 스크립트를 실행했는데, 출력 로그가 전부 한 줄로 붙어서 나오거나, ^M 문자가 끝에 찍히는 현상입니다. 이는 운영체제별로 줄바꿈을 표현하는 방식이 다르기 때문입니다. 유닉스 계열인 macOS는 줄바꿈에 LF(Line Feed, \n)만 사용하지만, 윈도우는 CR(Carriage Return, \r)와 LF의 조합인 CRLF를 사용합니다.
맥 터미널은 파일 끝에 CR 문자가 남아 있으면 이를 일반 텍스트로 인식하여 출력하거나, 줄바꿈 로직을 수행하지 못하는 경우가 많습니다. 실제로 터미널에서 cat -A 명령어를 통해 파일을 확인해보면 줄 끝마다 ^M이 보입니다. 이를 해결하지 않고 스크립트를 실행하면 명령어 해석기가 줄의 끝을 인식하지 못해 문법 오류를 내거나 로그가 뭉치는 결과를 낳습니다.
| 구분 | macOS (Unix) | Windows |
|---|---|---|
| 줄바꿈 코드 | LF (0x0A) | CRLF (0x0D 0x0A) |
| 문자 표현 | \n | \r\n |
해결 방법은 터미널에서 dos2unix 명령어를 사용하거나, sed 명령어로 CR 문자를 강제로 제거하는 것입니다. 예를 들어 sed -i '' 's/\r$//' filename.sh 명령어를 실행하면 파일 내의 모든 CR 문자가 삭제되어 맥 환경에 맞는 줄바꿈 형식으로 변환됩니다. 이후 스크립트를 실행하면 로그가 정상적으로 줄바꿈되어 출력됩니다.
사례 3: echo 명령어 출력 결과가 한 줄로 쏟아질 때
동영상으로 보는 맥 터미널 줄바꿈 설정 방법
글로 충분하지 않다면 관련 영상을 함께 보세요. 클릭하면 YouTube에서 검색 결과로 이동합니다.
세 번째는 가장 흔하게 겪는 상황입니다. 사용자가 echo "Hello\nWorld"라고 입력했는데 기대한 것처럼 두 줄로 나뉘지 않고 Hello\nWorld라고 그대로 출력되는 경우입니다. 이는 맥의 기본 쉘인 Zsh에서 내장된 echo 명령어가 -e 옵션 없이는 백슬래시 이스케이프 시퀀스를 해석하지 않기 때문입니다.
많은 사용자가 리눅스나 다른 환경의 경험에 의존하여 echo가 기본적으로 \n을 해석할 것이라 착각합니다. 하지만 POSIX 표준에 따르면 echo의 동작은 시스템마다 다를 수 있습니다. 맥 터미널에서 줄바꿈을 포함한 문자열을 출력하려면 echo -e "Hello\nWorld"와 같이 옵션을 명시해야 하거나, 더 확실한 방법으로 printf 명령어를 사용하는 것이 좋습니다.
# echo 명령어로 줄바꿈 처리 (Zsh 기본 설정)
echo -e "첫 번째 줄\n두 번째 줄"
# printf 명령어로 줄바꿈 처리 (더 호환성 좋음)
printf "첫 번째 줄\n두 번째 줄\n"
printf는 형식 지정자를 사용하여 출력을 제어하므로, \n과 같은 이스케이프 문자를 항상 예측 가능하게 해석합니다. 따라서 스크립트 작성 시 echo보다는 printf를 사용하는 것이 맥 터미널 줄
자주 묻는 질문
맥 터미널 줄바꿈 설정 체크리스트
-
터미널 → Preferences → Profiles → Text → “Wrap lines to the width of the window” 체크 -
현재 stty 설정 확인:stty -a -
줄바꿈 옵션 적용:stty icrnl onlcr -
Q. 터미널에서 줄바꿈이 안 될 때 가장 흔한 원인은 무엇인가요?
A. 대부분은 입력 모드가 'raw' 상태이거나, .zshrc/.bashrc 파일에 `stty` 설정이 잘못된 경우입니다. 또한, 특정 키 바인딩이 충돌하면서 엔터키가 정상 동작하지 않을 수 있습니다.
Q. macOS 터미널에서 줄바꿈 설정을 바꾸려면 어떤 파일을 수정해야 하나요?
A. 사용 중인 쉘에 따라 `~/.zshrc`(zsh) 또는 `~/.bash_profile`(bash) 파일에 `stty onlcr` 혹은 `stty sane` 명령을 추가하면 됩니다. 파일을 편집한 뒤 터미널을 재시작하거나 `source` 명령으로 적용합니다.
Q. 터미널 폰트나 테마가 줄바꿈 문제에 영향을 줄 수 있나요?
A. 폰트 자체가 줄바꿈을 방해하는 경우는 드물지만, 일부 커스텀 테마가 ANSI 코드를 잘못 처리해 화면이 깨질 수 있습니다. 기본 테마와 시스템 폰트로 되돌려 보면 문제가 해결되는지 확인해 보세요.
Q. 줄바꿈 문제가 지속될 때 영구적으로 해결하려면 어떤 절차를 따라야 하나요?
A. 먼저 현재 `stty -a` 출력으로 설정을 확인하고, `stty sane`을 실행해 기본값으로 복원합니다. 그 후 쉘 초기화 파일에 `stty sane` 혹은 `stty onlcr`을 추가하고, 터미널 환경설정에서 '복구 모드'를 비활성화하면 영구적으로 해결됩니다.
함께 읽으면 좋은 글
