본문 바로가기
메가IT아카데미 국기과정/리눅스와 시스템보안

[1-7] 리눅스 쉘

by 한님폐하 2022. 9. 11.

1. 쉘 종류

chsh -l
# /bin/sh
# /bin/bash
# /usr/bin/sh
# /usr/bin/bash

 

2. 쉘 관련 환경파일

2-1. 사용자에 따른 환경설정 파일

2-1-1. 관리자가 일반 사용자의 환경을 설정 시켜 주는 경우

  • /etc/profile  :  로그인 할 때만 읽혀짐
  • /etc/bashrc   :  쉘이 실행 될때 마다 읽혀짐
  • /etc/profile.d/*.sh : 쉘이 실행 될때 마다 읽혀짐   

 

2-1-2. 일반 사용자가 자신의 환경을 설정 하는 경우   

  • $HOME/.bash_profile  : 로그인 할 때만 읽혀짐
  • $HOME/.bashrc        : 쉘이 실행 될때 마다 읽혀짐

 

2-2. 환경설정 파일 실행 순서 

2-2-1. 로그인

|─────────로그인──────────|──────쉘 실행 ──────|
/etc/profile           ->    $HOME/.bash_profile     ->   $HOME/.bashrc ->  /etc/bashrc
/etc/profile.d/*.sh
①                                  ②                                               ③                               ④

 ① : 시스템을 사용하는데 필요한 환경 변수 내용(모든 사용자에 적용되는 내용)들이 설정되어 있다. 
 ② : 계정이 필요한 환경 변수 내용(해당 계정에만 적용되는 내용)들이 설정되어 있다. 로그인 관련 배너 설정을 할 수 있다.
 ③ : 명령어를 자동으로 실행하기 위한 내용들이 설정되어 있다.
 ④ : 모든 사용자에게 적용되는 전역 변수 내용들이 설정되어 있다. 

2-2-2. 로그아웃

$HOME/.bash_logout -> $HOME/.bash_history 
①                                        ②

① : 로그아웃할때 실행되는 파일이며, 로그아웃 관련 배너 설정을 할 수 있다. 
② : 로그인 중에 실행했던 명령어들을 로그아웃할때 저장하는 파일이다. 

 

[참고] .bash_history'파일과 'history' 명령어 차이점

  • .bash_history 파일에는 로그인 중에 실행했던 명령어들을 로그아웃할때 저장하는 파일이다.
  • 사용자가 로그인 하게 되면 사용자의 명령어를 저장하기 위해서 'history'를 위한 Stack 공간이 할당된다.
  • 이때, Bash 쉘은 기본 1000개 명령어까지 저장할 수 있으며, sh 쉘은 history 기능을 지원하지 않는다.
  • 'history -c'를 실행하면 history 정보는 삭제되지만, 다시 로그인하면 '.bash_history' 파일에 의해서 복구된다.

 

[참고] 'source'와 'bash' 스크립트 파일 실행 차이점

  용도 사용 쉘 환경변수 유효성 'cd'로 명령어에 대한 경로 유지
source 스크립트 파일 실행 현재 쉘 파일 밖에서 접근 가능 파일 밖에서 유지 가능  
bash 새로운 쉘 파일 밖에서 접근 불가능 파일 밖에서 유지 불가능

 

3. 쉘 변수

3-1. 사용자 정의 변수

  • 사용자가 임의로 만들어서 사용하는 변수이며, 로그아웃 또는 재부팅되면 내용은 사라진다.
  • 만약, 로그인 중에 수동으로 삭제할 경우에는 unset 명령어를 사용한다.
  • 이 때, 'set' 명령어로 확인은 가능하지만, 환경 변수로 등록을 하지 않았기 때문에 'env' 명령어로를 검색되지 않는다.

 

3-2. 환경 변수

  • 환경 변수를 '.bash_profile'에 설정하면 다음 로그인 및 재부팅할때 사용할 수 있다.
  • 변수 이름은 대문자를 사용하는 것을 권장하며, 'env' 명령어를 이용하여 확인할 수 있다.
  • 'export' 명령어를 사용하여 사용자 정의 변수를 환경변수에 저장한다.

 

[참고] $HOME/.bash_profile 재실행

  • '. .bash_profile', 'source .bash_profile', 'source ~/.bash_profile' 명령어를 이용하여 재실행해도 된다.
  • 즉, 스크립트 파일을 실행하려면 점(.), source, sh, bash 명령어를 사용하면 된다.