Home 확실히 쉘을 꾸미고 나서 내 인생이 달라졌다 - zshrc prompt 커스텀하기!
Post
Cancel

확실히 쉘을 꾸미고 나서 내 인생이 달라졌다 - zshrc prompt 커스텀하기!

Intro

보안 직군에서 일하다 보니 제 직업 특성상 CLI 환경을 사용하는 경우가 많습니다.

저는 새로 소프트웨어를 접하게 되면 확장 프로그램 혹은 테마를 먼저 검색할 정도로 커스터마이징에 굉장히 집착하는 성격이라 CLI 환경도 최대한 커스텀 하게 사용하는 편입니다.

그래서 처음엔 터미널 에뮬레이터 (iterm2, tabby, warp, …)를 위주로 커스터마이징을 했었는데, 요즘은 쉘에 좀 관심이 많아졌습니다.

아무래도 보안 테스팅 툴 개발이 주 작업이라 터미널 에뮬레이터를 변경하는 것보다 쉘 자체를 변경하는 게 더 변화가 체감되서 그런 것 같네요. (터미널 에뮬레이터보다 VSCode, Intellij에서 직접 터미널을 여는 경우가 더 많으니까요 😁)

사담은 그만하고, 이번 포스트에선 zsh에 대한 이해가 있다고 가정하고 PROMPT 변수만 집중적으로 다루도록 하겠습니다.

What is PROMPT

터미널 앱을 열었을 때, 쉘 정보, 시간, 현재 경로 등을 표시해 주는 일종의 정보 창입니다.

아래에서 (base) ~ [master] 부분, 그리고 아래의 화살표까지가 PROMPT입니다.

1
2
3
(base) ┌──(hanbyul💀akazki)-[~/github/hanbyul.me] [master]!T
└─> echo "Hello World!"
Hello World!

저 같은 경우 git 정보 (git directory라면), conda 정보, 계정 정보 그리고 현재 경로 정도로 구성했는데, 사용자의 입맛대로 원하는 정보를 더 추가할 수 있습니다 👍

How to Customize

Location

PROMPT는 ~/.zshrc에 변수 형식으로 지정되어 있습니다.

1
PROMPT=''

이 변수를 아래 Varibles, Visual Effects를 참고해서 입맛대로 수정하고 저장 (source ~/.zshrc) 하면 쉘에 적용됩니다.

Variables

기본적으로 zsh는 다음과 같은 옵션(변수)들을 지원합니다.

특수문자 출력

옵션지원 OS
%%%MacOS, Linux
%))MacOS, Linux

로그인(계정) 정보

옵션지원 OS예시
%n사용자 이름MacOS, Linuxhanbyul
%M기기의 전체 호스트 이름MacOS, Linuxhanbyuls-MacBook-Pro.local
%y사용자가 로그인된 tty(/dev/를 제외)MacOS, Linuxttys037
%#계정의 쉘 권한 (root -> #, user -> %)MacOS, Linux%
%m맥북 모델 이름MacOShanbyuls-MacBook-Pro
%m호스트 이름Linuxhost

쉘 정보

옵션지원 OS예시
%~$HOME(~)으로 시작하는 현재 경로
%0~은 전체, %1~는 맨 뒤 하나의 값
MacOS, Linux~/github/hanbyul.me
%d, %/현재 경로MacOS, Linux/Users/hanbyul/github/hanbyul.me
%h이벤트 넘버MacOS, Linux2005
%?최근 명령어 결과(status)MacOS, Linux0
%L서브 쉘 레벨($SHLVL)MacOS, Linux1
%jjob 개수MacOS, Linux0

날짜 정보

옵션지원 OS예시
%Dyy-mm-ddMacOS, Linux23-08-21
%Wmm/dd/yyMacOS, Linux08/21/23
%wday-ddMacOS, LinuxMon 21
%T24-hourMacOS, Linux15:00
%t12-hour, am/pmMacOS, Linux3:00pm

또한 strftime을 사용한 %D{string} 옵션을 통해서 포맷을 지정해 줄 수도 있다고 합니다 😃

Visual Effects

또한 프롬프트에 색을 추가하거나, 굵기를 변경할 수 있습니다.

대부분의 옵션은 start, end가 있으며 start와 end 사이에 넣은 값을 옵션에 맞게 처리해 줍니다.

옵션설명예시결과
%B ~ %b프롬프트 굵게 표시%Bhanbyul%bhanbyul
%U ~ %u프롬프트 밑줄 표시%Uhanbyul%uhanbyul
%S ~ %s프롬프트 하이라이트 표시%Shanbyul%shanbyul
%F ~ %f프롬프트 색상 변경%F{yellow}hanbyul%fhanbyul

Tips

Preview the Vairables

매번 ~/.zshrc를 변경하고 원하는 대로 출력되는지 확인하는 일은 엄청나게 귀찮은 일입니다.

이 때, 내장된 print 함수의 -P 옵션을 사용하여 미리 보는 것을 통해 시간과 노력을 절약할 수 있답니다.

1
2
$ print -P "%n"
> hanbyul

Hide / Customize (base)

Anaconda 사용 시, 기본적으로 (base) 문자열을 프롬프트에 추가합니다.

이 부분을 customize 하기 위해서는 Anaconda에서 기본적으로 제공하는 기능을 비활성화한 후, PROMPT에 직접 환경 변수를 추가하면 됩니다.

기능 비활성화

1
conda config --set changeps1 False

zshrc에서 사용할 변수

1
2
$ print -P "${CONDA_DEFAULT_ENV}"
> base

Conclusion

직접 커스터마이징하기 귀찮거나 어렵다 싶으면 Zsh Prompt Generator와 같은 생성 사이트를 사용해 봐도 좋을 것 같네요.

이미 있는 테마를 이용하는 것도 좋지만, 옵션을 잘 활용하여 자기만의 프롬프트를 만드는 것도 한 번쯤 괜찮은 것 같습니다:)

References

This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

확장 프로그램써서 광명 찾자 - VS Code Extension 모음집

-

Trending Tags