리눅스 터미널 프롬프트에서 Bash 색상과 내용을 자유롭게 꾸미는 방법
현재 대부분의 최신 리눅스 배포판에서는 Bash가 기본 셸로 채택되어 있습니다. 그런데 배포판마다 터미널의 텍스트 색상이나 프롬프트에 표시되는 내용이 서로 다르다는 점을 눈치챘을 수도 있습니다.
추천 글: 리눅스에서 가장 널리 쓰이는 오픈소스 셸 5가지
접근성을 높이거나 단순히 취향 때문에 이 설정을 직접 바꾸고 싶다면 계속 읽어보세요. 이번 글에서는 그 방법을 하나씩 자세히 설명해 드립니다.
PS1 Bash 환경 변수란?
터미널의 모양과 명령 프롬프트는 PS1이라는 환경 변수가 결정합니다. Bash 매뉴얼 페이지에 따르면 PS1은 "셸이 명령을 읽을 준비가 되었을 때 표시되는 기본 프롬프트 문자열"을 의미합니다.
PS1에는 백슬래시(\)로 시작하는 여러 특수 문자를 조합해 사용할 수 있으며, 각 문자의 의미는 매뉴얼 페이지의 PROMPTING 섹션에서 확인할 수 있습니다.
먼저 현재 시스템에 설정된 PS1 값을 확인해 보겠습니다(환경에 따라 출력 결과는 조금씩 다를 수 있습니다):
$ echo $PS1 [\admin@wsxdn.com\h \W]$
이제 이 PS1을 원하는 형태로 바꾸는 방법을 살펴보겠습니다.
PS1 형식 커스터마이징하기
매뉴얼 페이지의 PROMPTING 섹션에 따르면, 주요 특수 문자의 의미는 다음과 같습니다:
\u:현재 사용자의 사용자 이름(username)\h:FQDN(완전 정규화 도메인 이름)에서 첫 번째 점(.) 앞까지의 호스트 이름(hostname)\W:현재 작업 디렉터리의 기본 이름(basename). 단, $HOME 경로는 물결표(~)로 축약되어 표시됩니다.\$:현재 사용자가 root면 #, 그 외에는 $를 표시합니다.
예를 들어 현재 명령의 히스토리 번호를 함께 보고 싶다면 \!를, 짧은 서버 이름 대신 전체 도메인(FQDN)을 표시하고 싶다면 \H를 추가하면 됩니다.
아래 예제에서는 두 특수 문자를 모두 현재 환경에 적용해 보겠습니다. 다음 명령을 실행하세요:
PS1="[\admin@wsxdn.com\H \W \!]$"
Enter 키를 누르면 아래와 같이 프롬프트 내용이 바뀌는 것을 확인할 수 있습니다. 명령 실행 전후의 프롬프트를 비교해 보세요.
한 걸음 더 나아가, 이번에는 프롬프트의 사용자 이름과 호스트 이름 부분의 색상을 변경해 보겠습니다. 텍스트 색상뿐 아니라 배경색도 함께 지정할 수 있습니다.
실제로 프롬프트에서 커스터마이징할 수 있는 요소는 세 가지입니다:
| 텍스트 형식 | 글자색(전경) | 배경색 |
| 0: 일반 텍스트 | 30: 검정 | 40: 검정 |
| 1: 굵게(bold) | 31: 빨강 | 41: 빨강 |
| 4: 밑줄 | 32: 초록 | 42: 초록 |
| 33: 노랑 | 43: 노랑 | |
| 34: 파랑 | 44: 파랑 | |
| 35: 보라 | 45: 보라 | |
| 36: 청록(Cyan) | 46: 청록(Cyan) | |
| 37: 흰색 | 47: 흰색 |
색상 시퀀스임을 알려주려면 시작 부분에 \e 특수 문자를, 끝부분에 m을 붙여야 합니다.
이 시퀀스에서 세 값(배경, 형식, 전경)은 세미콜론으로 구분됩니다(값을 생략하면 기본값이 적용됩니다).
추천 글: 리눅스에서 Bash 셸 스크립팅 배우기
또한 값의 범위가 서로 다르기 때문에 배경, 형식, 전경 중 어떤 것을 먼저 지정하든 결과는 동일합니다.
예를 들어 다음 PS1 설정은 프롬프트를 노란색 밑줄 텍스트에 빨간색 배경으로 표시합니다:
PS1="\e[41;4;33m[\admin@wsxdn.com\h \W]$ "
보기에는 좋지만, 이렇게 설정한 내용은 현재 사용자 세션에서만 유지됩니다. 터미널을 닫거나 세션을 종료하면 변경 사항이 모두 사라집니다.
변경 사항을 영구적으로 적용하려면 배포판에 따라 ~/.bashrc 또는 ~/.bash_profile 파일에 다음 줄을 추가해야 합니다:
PS1="\e[41;4;33m[\admin@wsxdn.com\h \W]$ "
다양한 색상 조합을 마음껏 시도해 보면서 자신에게 가장 잘 맞는 스타일을 찾아보세요.
마무리
이번 글에서는 Bash 프롬프트의 색상과 내용을 사용자 지정하는 방법을 알아보았습니다. 이 글에 대해 궁금한 점이나 제안할 내용이 있다면 아래 댓글을 통해 언제든지 의견을 남겨주세요. 여러분의 피드백을 기다리고 있습니다!