본문 바로가기

LINUX/Ubuntu

01. 쉘

 
shell 이란 , 명령어 처리기 혹은 유저 인터페이스라고 한다.
 
DOS 의 COMMAND.COM 이나, 윈도우의 cmd.exe, Linux 의 bash 도 shell 이라 한다.
 
예를 들어 dir 이란 명령어를 입력했는데,
 
기계에 불과한 컴퓨터가 dir 이 무엇인지 직접 알수는 없다.
 
여기서, shell 이 dir 이라는 명령어를 해석하여 커널에 전달하는 역할을 하는
 
명령어 해석기이면서 유저의 명령을 운영체제에 전달하므로 유저인터페이스이다.
 
그리고 리눅스 내부에는 이런 쉘이 제법 존재하는데 사용자 별로 로그인 쉘이 존재한다.
 
/etc/passwd 에 명시되어 있다.
 
 

사용가능한 쉘 목록보기
 
BASH
cat /etc/shells
 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
 
 

현재 사용중은 쉘 보기
 
BASH
$ echo $SHELL
 
/bin/bash
 
 

로그인 쉘
 
로그인 쉘은 사용자가 로그인 했을때 해당 사용자에게 적용되는 쉘을 의미한다.  
 
 

비로그인 쉘
 
로그인 없이 실행되는 쉘로 GUI 에서 새 터미널을 여는 경우 해당한다.
 
 

사용자 쉘 변경
 
chsh 명령을 사용하여 사용자가 사용할 로그인 쉘을 변경할 수 있다.
BASH
$ chsh
 
Password: (암호 입력)
Changing the login shell for userID
Enter the new value, or press ENTER for the default
Login Shell [/bin/sh]: /bin/bash
 
 

배시 쉘
 
Bash Shell 의 핵심적인 특징으로는 아래와 같은 기능을 제공하는 것이다.
 
  • 탭 완성(tab completion)
 
  • 명령행 히스토리(history)
 
  • Alias
 
  • 중괄호 확장(brace expansion)
 
  • 반복문
 
  • 줄 편집(Line-editing)
 
 

배시 쉘의 로그인 과정
 
    1.  사용자가 ID/PW 입력
 
    2.   /bin/login 프로세스가 해당 사용자의 인증에 관련된 파일(/etc/passwd, /etc/shadow 등)을 참조하여 
         사용자의 기본정보(홈 디렉토리, 기본 쉘 등)를 확인
 
    3.   /bin/login 프로세스가 BASH쉘을 호출
 
    4.   /etc/profile 을 해당 사용자에게 적용
 
    5.   사용자 개인 환경설정 적용을 위해 사용자 홈 디렉토리의 .bash_profile을 불러들여서 적용
         ( 만약 .bash_profile이 없으면 .bash_login 파일을 불러들이고, .bash_login 파일도 없으면 .profile 을 적용)
         (적용 순서는 .bash_profile > .bash_login > .profile 순서이고 셋 중 하나만 적용됨)1
 
    6.   사용자 홈 디렉토리에 있는 .bashrc 적용
 
    7.  .bashrc에 의해 /etc/bashrc 파일을 불러 적용
 
    8. 사용자에게 쉘 프롬프트 제공
 
 

배시 쉘 환경 설정 스크립트
 
/etc/profile
    - 시스템 전역 초기화 파일.
    - /etc/bashrc 파일도 시스템의 일반적 설정을 담당하지만 etc/profile이 조금 더 일반적으로 사용됨
    - 시스템 전체 환경, 시스템 부팅할 때 시작프로그램 설정, 로그인 셋업 기능 등
 
 /etc/bashrc
    - 시스템 규모의 alias와 함수 
 
.bash_profile
    - 각 사용자 홈디렉토리에 존재하는 쉘 환경설정 파일
    - 터미널 설정과 환경변수같은 설정 기록
    - 한 번 로그인되면 로그아웃 때까지 유지(source 명령으로 설정 적용 가능)
 
.bashrc
    - 사용자가 정의한 변수, 알리아스, 함수 등과 같은 사용의 용이성을 위해 필요한 항목 설정
    - .bashrc 파일은 쉘이 실행될 때마다 실행
 
.bash_logout
    - 사용자가 로그아웃할 때 실행할 것들을 정의하는 파일
 
 

'LINUX > Ubuntu' 카테고리의 다른 글

07. vim  (0) 2020.01.29
05. 마운트  (0) 2020.01.29
04. 리눅스 파일 시스템 구조  (0) 2020.01.29
03. 런레벨  (0) 2020.01.29
02. 가상콘솔  (0) 2020.01.29