Shell?
- 커널과 사용자를 이어주는 통로 역할
- 하나의 명령어 처리기
- 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기 때문에 이러한 이름이 붙음
- CLI 형태와 GUI 형태 2가지로 존재
톰슨 셸 (sh)
- 최초의 Unix shell
- 켐 톤슨이 멀틱스 셸을 따라 모형화 한 것
Bourne shell (본 셸, 줄여서 sh)
- 처음으로 유닉스 셸에서 파생한 shell
- 유닉스 버전7의 기본 shell
- 톰슨 셸을 대체하는 셸로서 실행파일 이름이 sh로 같음
- 벨 연구소의 스티븐 본(Stephen Bourne)이 개발, 1977년 발표
csh
- 본 셸의 뒤를 이어 등장한 셸
- 셸 스크립트를 작성하는 언어가 c와 닮아서 csh
- 빌 조이에 의해 작성
tcsh (tc shell)
- csh의 뒤를 이어 나타난 셸
- C 셸의 기능에다 명령어-완성(command-completion)기능을 추가시켜 만든 퍼블릭 도메인 버전
- 다른 셸들과 달리 스크립트 안에 함수 정의 불가
ksh (korn shell)
- 벨 연구소의 데이비드 콘이 개발, 1983년 발표
- 명령행 편집기능 제공
bash (Bourne-again shell)
- ksh과 csh의 장점 차용
- GNU 프로젝트를 위해 'Brian Fox' (브라이언 폭스) 가 작성한 쉘
- 명령행 편집기능 제공
- 대부분 sh와 호환
bash 시작 파일 실행 순서
로그인 셸 시작
- /etc/profile 존재 여부 확인하여 있으면 실행 (내부적으로 /etc/bash.bashrc 호출)
- ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아서 존재하면 실행
로그인 셀 빠져나갈 때
상호작용 셸로 시작할 때
- /etc/bash.bashrc, ~/.bashrc를 순서대로 읽고 실행(존재하면)
chsh 명령어
- 사용자 로그인 shell 속성 변경
- 해당 속성은 /etc/passwd에 저장
# bash 로 변경
chsh -s /bin/bash
# /etc/shells 안에 지정된 셸 출력
chsh -l