리눅스 프롬프트 변경하기
목차
리눅스의 셸 프롬프트는 사용자가 원하는 데로 변경이 가능합니다. 보통 우분투 등 Distro를 설치하면 기본이 username @ computer name / directory 와 같은 형식으로 디폴트 값이 설정되어 있습니다.
그 내용은 환경변수 $PS1에 저장되어 있는데요. 뭐 나쁘지 않은 프롬프트입니다만 커스텀 프롬프트를 원하는 경우 바꿀 수 있습니다.
현재의 프롬프트 정의는 echo $PS1 로 확인할 수 있습니다. 이건 WSL2의 기본 셋업인데 일반 유저와 루트의 프롬프트가 다릅니다. Distro마다 각자 프롬프트 정의가 되있으니 조금씩 다릅니다.
echo $PS1
이 포스팅에서는 현재 사용자의 프롬프트를 변경하는 방법을 알아보겠습니다.
프롬프트를 변경하는 방법은 쉽습니다. $PS1 변수의 내용에 \백슬레시로 시작하는 이스케이프코드들을 조합하면 됩니다. 근데 변경하면 기존의 프롬프트 정의가 없어지니까 일단 다른 변수에 백업해두는 것도 좋은 방법입니다.
셸에서 이렇게 입력하면 PS1에 있는 이스케이프 코드들이 PS1_BAK 변수로 입력됩니다. 임시로 생성한 변수라 로그아웃하면 사라지는 것에는 주의합니다.
PS1_BAK="$PS1"
우선 아무것도 없는 것으로 바꿔봅시다. \$는 일반 사용자는 $를 표시하고 super user는 #를 표시합니다.
PS1="\$ "
24시간과 $로 프롬프트를 조합해 보면 다음과 같습니다
PS1="\A \$ "
이런 식으로 이스케이프 코드를 넣어 여러가지 정보를 표시할 수 있습니다.
이스케이프 코드
이스케이프 코드는 다음과 같습니다.
이스케이프 코드 | 표시되는 값 |
\d | 일, 월, 날짜 형식의 현재 날짜 |
\h | 로컬 컴퓨터의 호스트 이름에서 뒤쪽 도메인 이름을 뺀 값 |
\H | 전체 호스트 이름 |
\j | 현재 셸 세션에서 실행 중인 작업의 수 |
\l | 현재 단말 장치의 이름 |
\n | 줄 바꿈 문자 |
\r | 캐리지 리턴 |
\s | 셸 프로그램의 이름 |
\t | 24시간 시:분:초 형식의 현재 시간 |
\T | 12시간 형식의 현재 시간 |
\@ | 오전/오후 12시간 형식의 현재 시간 |
\A | 24시간 시:분 형식의 현재 시간 |
\u | 현재 사용자의 사용자 아이디 |
\v | 셸의 버전 번호 |
\V | 셸의 버전 및 릴리스 번호 |
\w | 현재 작업 디렉터리 이름 |
\W | 현재 작업 디렉터리 이름의 마지막 부분입니다 |
\! | 현재 명령의 히스토리 번호 |
\# | 이 셸 세션 중에 입력한 명령의 수입니다. |
\$ | 수퍼유저 권한이 없으면 $ 문자가 표시 (root 사용자는 #을 표시) |
\[ | 인쇄되지 않는 하나 이상의 문자열의 시작 터미널을 조작하는 비인쇄 제어 문자 삽입 (color 변경 등에 사용) |
\] | 인쇄되지 않는 문자열 시퀀스의 끝 |
위의 코드와 함께 사용하는 텍스트 색상 이스케이프 입니다. \[ 로 시작해서 비인쇄 제어 문자로 바꾼 후 마지막에 \]로 시퀀스를 빠져나와야 합니다.
이스케이프 | 색상(color) | 이스케이프 | 색상(color) |
\033[0;30m) | Black | \033[1;30m) | Dark Gray |
\033[0;31m) | Red | \033[1;31m) | Light Red |
\033[0;32m) | Green | \033[1;32m) | Light Green |
\033[0;33m) | Brown | \033[1;33m) | Yellow |
\033[0;34m) | Blue | \033[1;34m) | Light Blue |
\033[0;35m) | Purple | \033[1;35m) | Light Purple |
\033[0;36m) | Cyan | \033[1;36m) | Light Cyan |
\033[0;37m) | Light Gray | \033[1;37m) | White |
위에 코드들을 조합해서 커스컴 셸 프롬프트를 만들어 봅니다.
PS1="\n\[\033[0;37m\][\H-\s-\v]\[\033[0m\] \[\033[0;36m\]\w\[\033[0m\]\n\[\033[0;33m\]\A\[\033[0m\] \[\033[0;32m\]<\u>\[\033[0m\] $ >>"
가독성이 좋게 가로세로 간격을 적당히 조절해줘도 좋습니다. 너무 헐렁하게 보일 수도 있는데 커스터마이즈 자체가 취향존중이니까요…
로그아웃하면 바뀌기 때문에 ~/.bashrc 의 맨 아랫줄에 스크립트를 박아놓습니다.
su vim ~/.bashrc
그 다음에 source 명령어로 바로 변경할 수 있고 다음에 로그인 했을 때도 변경된 프롬프트를 사용할 수 있습니다.
source ~/.bashrc
*PS1 변수의 사용법은 이것이 전부는 아니지만 이 정도만 커스텀해서 사용해도 편리합니다.