본문 바로가기
IT/리눅스 이론

리눅스 - 사용자 프롬프트 환경 변경하기 .bashrc 파일 수정

by 꾸꾸웍스 2022. 5. 17.
반응형

리눅스 사용자 로그인 프롬프트 예쁘게 꾸미기  .bashrc 파일 수정


 

 

 

리눅스 사용자별 .bashrc 파일 이란??

 

리눅스는 다중사용자 시스템으로 하나의 리눅스 환경에서 여러 명의 사용자가 접속해서 사용합니다. 따라서 각 사용자마다 쉘 환경 등 각자 원하는 스타일로 변경하여 사용할 수 있습니다. 예를 들어 A라는 아파트에 여러 가구가 들어가 산다고 가정하면 똑같은 아파트에 살지만 각자 집에 구조 및 환경이 다른 것처럼 사용자 홈에 있는 .bashrc파일을 수정하여 사용자 입맛에 맞게 변경하여 사용할 수 있습니다.

 

 

 

리눅스 사용자 로그인 및 홈 디렉터리

 

리눅스 사용자 .bashrc 파일

리눅스 사용자 .bahsrc 파일 위치는 사용자가 리눅스에 로그인한 환경(사용자 홈 디렉터리)에 위치하게 됩니다. 

 

 

login 화면

 

 

remote 프로그램을 사용하여 로그인을 하거나 su 명령어를 이용하여 다른 사용자로 스위칭을 하면 사용자 계정을 생성했을 때 지정된 홈 디렉터리로 위치를 이동하게 됩니다

 

사용자 계정에 홈 디렉터리를 위치를 알고 싶거나 모르시는 분들은 환경변수를 이용해 현재 접속한 사용자의 홈디렉토리를 볼 수 있습니다

user@server # echo $HOME
/home/usergroup/user

 

리눅스 사용자 .bashrc 파일은 파일명 앞에 ' . ' 점이 붙어 숨김 파일 처리가 되어 있기 때문에 ls 명령어로 a 옵션을 사용하여 .bashrc 파일을 사용할 수 있습니다. 아래 예시는 .bashrc 파일을 제외한 파일들은 생략 처리하였습니다

user@server # ls -al /home/usergroup/user
....
-rw-r--r-- 1 user usergroup 307 Apr 8 15:09 .bashrc
....

 

 

 

리눅스 사용자 .bashrc에 많이 사용되는 2가지

 

사용자 환경에 TIMEOUT 설정

 

사용자 환경에 timeout 설정을 하는 가장 큰 이유는 보안상의 이유로 remote로 접속하는 사용자들은 보통 5분 정도로 입력이 없으면 사용이 종료되게 timeout을 설정하게 됩니다.

아래 두 가지는 같은 방법입니다.

user@server # cd

### TMOUT=600 입력후 'ctrl + d'를 입력
user@server # cat >> .bashrc
TMOUT=600

user@server # cd

### TMOUT=600 입력후 'ctrl + d'를 입력
user@server # cat >> .bashrc
export TMOUT=600

 

사용자 환경에 prompt 설정

 

사용자 프롬프트를 변경하는 가장 큰 이유는 사용자가 터미널에 하나하나 명령을 날리는 곳으로 작업의 정확성을 위하여 현재 사용하는 서버와 계정 정보, 현재 날짜와 현재 시간, 현재 디렉터리에 대한 정보를 입력마다 보이게 되면 작업의 실수가 줄어들어 작업의 정확성이 올라갑니다

 

사용자 홈 디렉터리에 있는 .bashrc 파일 맨 아래 PS1환경변수 문구를 추가합니다.

PS1="\n[ \e[1;31mserver\e[m \D{%Y-%m-%d %H:%M:%S} ] \w\n\u@\h # "

 

 

위 프롬프트 내용을 적용하였다면 시스템을 부팅하지 않고 source 명령어를 이용해 적용합니다.

### source 명령어를 이용해 부팅하지 않고 .bashrc 파일을 적용

user@server #
user@server # source .bashrc



### 위 명령 후 프롬프트가 아래와 같이 변경됨

[ server 2022-05-17 16:13:23 ] ~
user@server # 

[ server 2022-05-17 16:13:25 ] ~
user@server #

 

 


 

반응형

 


 

 

 

※ 여기서 잠깐!

PS1과 PS2란? PS1과 PS2 차이점

  • PS1은 현재 사용자가 사용하는 터미널의 프롬프트를 말합니다
  • PS2는 PS1에서 추가적인 명령을 받을 때 나오는 프롬프트를 말합니다
### PS1 - 사용자가 실제로 명령을 내리는 프롬프트

user@server #
user@server # cd
user@server # ls -l


### PS2 - 추가적인 명령을 받을 때 나오는 '>' 기호가 PS2

user@server # \
>
>

user@server # for A in `echo "1 2 3"`
> do
> echo $A
> done
1
2
3

 

 

 

PS1 환경변수에 들어간 이스케이프(escape) 문자 설명

  • 이스케이프 문자는 역슬래시(\)가 들어간 특수한 문자를 변형합니다
  • 즉, 특수한 문자를 사용하기 위해 역슬래시를 사용합니다
  • PS1 환경변수에 들어간 이스케이프 문자는 아래 표 내용과 같습니다
이스케이프 문자 설명
\e 문자열에서 백슬래시와 이스케이프문자를 인용 부호(")로 묶어 인식하도록 합니다.
\D date 명령어의 포멧형태로 인식합니다
\u 현재 접속한 사용자 계정을 인식합니다
\h 현재 사용한 서버를 인식합니다
\w 현재 위치한 디렉토리 경로를 인식합니다
\n newline의 약자로 새로운 라인으로 줄바꿈을 합니다.

 

  • \D 이스케이프 문자의 data 명령어 포멧 출력 형태는 아래와 같습니다
    • 현재시간이 2022년 05월 17일 16시 55분 34초라는 기준으로 예를 들겠습니다
date 명령어 포멧형식 date 포멧 출력 설명
%Y 2022 year의 약자로 년도를 나타내며 4자리로 나타냅니다
%y 22 year의 약자로 년도를 나타내며 년도의 끝자리 2자리를 나타냅니다
%M 52 minute의 약자로 시간의 분을 나태냅니다
%m 05 month의 약자로 달을 나타냅니다
%H 16 Hour의 약자로 시간을 나타냅니다
%h May 달의 출력형태를 영문으로 나타냅니다
%D 05/17/22 월/일/년 형태로 출력합니다
%d 17 day의 약자로 일자를 나타냅니다
%S 34 seconds의 약자로 초를 나타냅니다
%s 1652774134 시간을 초로 계산하여 나타냅니다

 

 

 

리눅스 사용자 프롬프트 PS1 내용 비교

 

 

리눅스 사용자 프롬프트 PS1 내용 설명

  • 1) 새롭게 시작할 때 \n으로 새로운 줄부터 시작합니다
  • 2) \e[1;35mserver\e[m 의 내용 중 1;34m은 server를 보라색으로 출력하게 합니다
  • 3) date 명령어 포멧형태로 바꾸어 날짜를 출력하게 합니다
  • 4) 디렉토리 경로를 출력합니다
  • 5) 줄 바꿈을 합니다
  • 6) '\u@\h #' = '사용자@서버 #'로 출력합니다

 

 


 

 


 


 

반응형
그리드형

댓글