셸(Shell) 이란?
사용자의 명령을 해석 후 실행하여 커널에 전달하는 역할을 한다. 커널 <-> 사용자 간의 다리 역할을 하며, 용도에 따라 다양한 셸이 존재한다. 사용자가 로그인을 하게 되면 명령을 수행할 수 있도록 지원하는 셸이 부여되는데 셸이 부여되지 못하면 로그인을 하더라도 명령을 수행할 수 없다.
최초의 셸에 가까운 본 셸(Bourne Shell)을 개발하였지만 유용한 기능이 많지 않아 버클리 대학의 빌 조이(Bill Joy)가 개발한 C 셸(C Shell, csh)이 사용되기 시작하였다. C셸은 본 셸보다 사용하기 편하며, 유용한 기능이 탑재되어 있다. 현재는 bash, ksh, tcsh, zsh과 같은 다양한 셸이 되었으며, 리눅스에서는 sh이 기본으로 ksh와 csh 계열의 장점을 결합한 bash(Bourne Again shell)이 표준으로 사용되고 있다.
주요 셸의 특징
Bourne Shell : 1977년 스티븐 본이 개발한 유닉스 버전 7의 기본 셸
bash : 1989년 브라이언 폭스가 GUN 프로젝트를 위해 개발한 배시셸 (Bash)은 본 셸을 기반으로 만들어졌다. 현재 리눅스의 표준셸이며, sh와 호환되고, ksh와 csh의 유용한 기능을 참고하여 지원한다.
C 셸 : C 셸(csh)은 1978년 버클리 대학의 빌 조이가 개발한 것으로 C언어를 기반으로 만들어졌으며 강력한 프로그램 작성 기능을 가지고 있다. 명령행 편집 기능은 지원하지 않는다.
tcsh : 1975년 켄 그리어(Ken Greer)가 테넥스(TENEX)라는 운영체제에 명령행 완성 기능을 반영하게 되었고, 1981년 C 셸과 통합해서 탄생시킨 것이 tcsh이다. TC 셸은 말 그대로 csh의 기능을 강화시킨 셸로 명령어 완성 기능으로 명령행 편집 기능 등을 추가로 지원한다.
ksh : 콘 셸(Kone Shell, ksh)은 1983년 AT&T사의 벨 연구소에서 근무하던 데이비드 콘(David Korn)이 개발하였다. 본 셸을 확장해서 만들어졌으며, 벨연구소 사용자들의 요청으로 C 셸의 많은 기능을 추가하였다. 작업 제어, 앨리어스, 히스토리 기능, Vi 및 Emacs 스타일의 명령행 편집 기능, 명령행 완성 기능 등을 제공한다.
주요 환경 변수
HOME : 사용자의 홈 디렉터리
PATH : 실행 파일을 찾는 디렉터리 경로
LANG : 셸 사용 시 기본으로 지원되는 언어
TERM : 로그인한 터미널 종류
PWD : 사용자의 현재 작업 디렉터리
SHELL : 사용자의 로그인 셸
USER : 사용자의 이름
DISPLAY : X에서 프로그램 실행 시 출력되는 창
PS1 : 프롬프트(Prompt) 변수
PS2 : 2차 프롬프트 변수
'보안 공부 > 리눅스' 카테고리의 다른 글
네트워크 구성 및 인터네트워킹 장비 (0) | 2022.01.01 |
---|---|
OSI 7 계층 (OSI 7 LAYER) 기능 (0) | 2021.12.31 |
리눅스 디렉터리의 종류와 특징 (0) | 2021.12.23 |
리눅스의 장/단점 (0) | 2021.12.21 |
댓글