(shell) 쉘 스크립트 프롬프트 변경하기
쉘에서 프롬프트를 변경할일이 있을까 싶기도 하지만 어떤 서버의 경우 요상하리 만큼 로그인후 쉘의 길이가 긴 경우가 있다. 그냥 쓰면 될껄 왜 변경하느냐 하는 분도 있겠지만 길이가 길면 터미널 창에 잘 들어오지도 않고 자바 같은 경우 실행시 좀 짜증나게 되서. 쉘 변경하는 내용을 올린다.
어디서?
필자 같은 경우는 본인 home 디렉토리의 자기 계정내에 있는 .bashrc 에서 수행하였다. 여기서 수행한 이유는 일단은 전체적으로 같은 쉘을 쓸지 말지는 모르는 상황이어서 일단은 내 계정에 대해서는 수행하고자 .bashrc 에서 수정작업을 진행하였다. 해당 서버를 사용하는 전체에 대한 수정작업을 하고 싶다면, etc/bashrc(bash.basrc) 에서 아래의 작업을 해주면 될것으로 생각된다.(필자역시 해보진 않았다.)
어떻게?
저장한후, 닫고 나서 바로 다시 로그인을 해서 프롬프트를 확인해 보았다.
ash84@:~/nanpa$
그렇다면, PS1
과 그 문자들이 의미하는 것은 무엇일까?
프롬프트의 제어는 쉘 상에서 특별한 변수에 의해서 제어가 된다. PS1
, PS2
, PS3
, PS4
변수가 그런것들인데, 각각의 의미하는 바는 아래와 같다.
PS2 – Secondary Prompt String(default value : >)
PS3 – select command를 위한 prompt
PS4 – shell script 를 디버깅 모드에서 실행시 사용되는 prompt
PS1
을 대상으로 하였고 위에서 수정한 부분 역시 PS1
을 대상으로 하였다. 자, 이제 그렇다면 PS1
에 설정한 문자는 어떤 의미일까?
설정 문자 | * 의미 * |
\a | an ASCII bell character(07) |
\d | the date in “Weekday Month Date” format (e.g., “Tue May 26”) |
\D{format} | format의 지정에 따른 date, strftime(3) |
\e | an ASCII escape character(033) |
\h | the hostname up to the first ‘.’ |
\H | the hostname |
\j | 쉘에 의해서 관리되는 현재 job의 수 |
\l | 쉘의 터미널 디바이스 이름의 basename |
\n | newline |
\r | carriage return |
\s | 쉘의 이름 |
\t | 24-hour, 현재시간, HH:MM:SS |
\T | 12-hour, 현재시간, HH:MM:SS |
\@ | 12-hour, 현재시간, am/pm |
\A | 24-hour, 현재시간, HH:MM |
\u | 현재 사용자 이름 |
\v | bash 의 버전 |
\V | bash 의 릴리즈 |
\w | 현재 working 디렉토리 |
\W | 현재 working 디렉토리의 basename |
! | the history number of this command |
# | the command number of this command |
\$ | if the effective UID is 0, a #, otherwise a $ |
\nnn | the character corresponding to the octal number nnn |
\ | backslash |
[ | begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt |
] | end a sequence of non-printing characters |
PS1
설정한 부분에서 [0;31] 이 부분은 색을 넣은 부분은데, 색 처리에 대한 코드는 아래의 Reference 에서 색처리 관련 링크를 찾아보면 이해가 될것이다. 위의 설정에서 \u@\w 를 설정함으로써 간단하게 현재 사용자와 현재 디렉토리를 보여주고 있는 것이다.
쉘 프롬프트 수정에 대해서 조사하면서 리눅스 쉘에 대해서 모르는게 참 많다는 생각이 들었고 .bashrc 를 통해서 다양한 작업이 가능하겠구나 하는 생각이 들었다. 쉘은 쉘일 뿐이지만 그래두 커스텀을 원하는 개발자가 있다면 참고하시길.
*Reference *
– How to : Change/Setup bash custom prompt(PS1)
– BASH Shell: Change The Color of My Shell Prompt Under Linux or UNIX