본문 바로가기
OS/Linux

리눅스 기초 30강 시리즈 - 27강 bash - 2

by HJ0216 2023. 2. 4.

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

27강 bash - 2

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

 로그인 시, Booting 과정

1. 파일 읽어오기 및 내용 적용

/etc/profile

/etc/profile.d/*.sh

 

 

2. 홈 dir 내 파일 읽어오기 및 내용 적용

~/.bash_profile (각 사용자의 master file)

[j@hj0216 ~]$ nl .bash_profile
     1  # .bash_profile

     2  # Get the aliases and functions
     3  if [ -f ~/.bashrc ]; then
     4          . ~/.bashrc
     5  fi

     6  # User specific environment and startup programs

     7  PATH=$PATH:$HOME/.local/bin:$HOME/bin

     8  export PATH

#: 주석

if [ -f ~/.bashrc ]; then: ~/.bashrc home dir에 .bashrc file이 존재한다면,

        . ~/.bashrc: .bashrc file을 읽어 올 것

PATH=$PATH:$HOME/.local/bin:$HOME/bin: PATH 변수에 $PATH, 원래 PATH가 갖고 있는 값을 넣고 $HOME/.local/bin, $HOME/bin 추가

export PATH: 지역변수를 전역변수화 시킴

[j@hj0216 ~]$ echo $AGE
30
[j@hj0216 ~]$ bash
# 새로운 shell 실행
[j@hj0216 ~]$ echo $AGE

# bashrc에서 설정한 AGE변수는 지역변수이므로 해당 shell이 아닌 다른 shell에서는 적용되지 않음

[j@hj0216 ~]$ exit
[j@hj0216 ~]$ export AGE
# 변수를 export하므로써 지역변수->전역변수
[j@hj0216 ~]$ bash
[j@hj0216 ~]$ echo $AGE
30

.bashrc 파일 수정 시, 해당 session에는 반영이 되어있지 않으므로 수정 후 . ~/.bashrc_profile 수정 파일 재실행

 

 

~/.bashrc (각 사용자의 보조 file)

[j@hj0216 ~]$ nl .bashrc
     1  # .bashrc

     2  # Source global definitions
     3  if [ -f /etc/bashrc ]; then
     4          . /etc/bashrc
     5  fi

     6  # Uncomment the following line if you don't like systemctl's auto-paging feature:
     7  # export SYSTEMD_PAGER=

     8  # User specific aliases and functions

 if [ -f /etc/bashrc ]; then : etc dir 밑에 bashrc 파일이 존재할 경우,
          . /etc/bashrc: etc dir 밑에 bashrc 파일 실행

 alias and functions를 .bashrc에 저장하여 session 변경 시에도 사용할 수 있도록 할 수 있음

 

 

/etc/bashrc (모든 사용자들에게 적용되는 bashrc 파일, $PS1* 설정)

[j@hj0216 ~]$ cat /etc/bashrc
# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

...

Prompt란 컴퓨터가 입력을 받아들일 준비가 되어서 기다리고 있다는 것을 알려주는 메세지로 Linux창에서 $(일반유저), #(관리자)을 의미

윈도우 CMD에서는 Prompt가 1개뿐이지만, Linux에서는 PS(Prompt String)1, PS2, 총 2개가 존재

PS1에서 주로 작업을 하게되며, PS1에서 명령어를 불완전하게 입력할 경우, '>' 표시의 단순한 prompt로 변화하게 되는데, 이 때 이 prompt를 PS2라고 함

 

 

~/.bash_history (로그아웃 전 작업 내용 저장)

[j@hj0216 ~]$ nl .bash_history
     1  who am i
     2  whoami
     3  exit

 

 

~.bash_logout (로그아웃 시 필요한 작업 내용 저장)

[j@hj0216 ~]$ nl .bash_logout
     1  # ~/.bash_logout

 

 

참고 자료

📑 [리눅스] 셸 환경변수, 프롬프트(Prompt)란, PS1과 PS2 차이점, 관련 문제