unix 계열을 사용하는 대다수의 유저들은 달리 인식하지 않는다면 그동안 Bash 쉘을 사용해왔을 것이다. 그런데 어느순간 Apple이 macOS Catalina (10.15)에서부터 zsh을 기본 쉘로 지정하여 강제로 zsh을 사용하게 되었다.
사실 대부분의 사용자들은 기본 쉘이 변경되더라도 큰 영향을 받지 않고 있고, 나조차도 bash에서 zsh로 변경되었다고 해서 큰 문제가 발생되거나 하진 않았다. 설령 Bash를 기반으로 작성된 스크립트라 하더라도 macOS에는 여전히 Bash 쉘 바이너리가 존재하기 때문에 크게 문제가 될 일도 없다.
macOS Catalina (10.15)에서의 bash 쉘
$ bash
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ ls -la /bin/bash
-r-xr-xr-x 1 root wheel 623472 Sep 22 2020 /bin/bash
bash-3.2$
더구나 zsh은 oh my zsh 터미널을 화려하게 꾸미고 플러그인을 쉽게 사용할 수 있다는 장점을 갖고있다. 터미널을 꾸미는데 신경을 쓰지 않은 나도 잘 이용하고 있다.
그런데 zsh로 바뀌면서 한 가지 거슬리는 점이 생겼는데 터미널 출력 결과물 뒤에 하일라이트된 퍼센트 (highlighted percent)가 붙는 점이다.
~ » echo "aaa"
aaa
~ » echo -n "aaa"
aaa%
~ »
이것은 터미널의 마지막 출력에서 줄바꿈이 없는 경우에 아래와 같이 쉘 프롬프트가 같이 표시되어 발생되는 혼돈을 방지하기 위한 기능이다.
bash-3.2$ echo "aaa"
aaa
bash-3.2$ echo -n "aaa"
aaabash-3.2$
해당 기능은 대부분의 경우에 유용하게 사용할 수 있으나 가끔 걸리적 거릴때가 있다. 아래와 같이 필요에 따라 PROMPT_EOL_MARK를 원하는 값으로 재지정하거나 없애버릴 수 있다.
~ » export PROMPT_EOL_MARK=!
~ » echo -n "aaa"
aaa!
~ » export PROMPT_EOL_MARK=
~ » echo -n "aaa"
aaa
재미있는 점은 zsh은 구분자로 일반 사용자의 경우 “%”가 root 사용자의 경우 “#”이 표시된다고 하는데 macOS Catalina에서는 root의 기본 쉘이 bash이기 때문에 root 환경에서는 “#”이 덧붙여지는건 보지 못하고 있다. Catalina 이후 환경에서 root 사용자의 기본 쉘이 어떻게 바뀌었는지는 확인이 필요하다.