리눅스

셸의 이해 (1) #Linux

iwannabebackendexpert 2022. 7. 28. 14:23

 

 

셸이란?

셸은 커널과 사용자간의 대화를 위한 역할을 수행함.

대충 이렇게 생긴것을 본적이 있을것이다. 이것이 셸이라고 하는 것이다.

앞서 작성된 게시물을 보면 GUI에 관해서 서술한적이있는데, GUI가 필수적이지 않은 리눅스에서 작업을 할때, 이 셸을 통해 작업을 하게 된다.

 

주요 셸과 특징

특징
Bourne Shell 1977년 스티븐본이 개발한 유닉스 버전 7의 기본 셸.
Bash Bourne Again Shell 이라는뜻
1989년 브라이언폭스가 GNU프로젝트를 위해 개발.
명령히스토리, 명령어 완성 기능, 히스토리 치환, 명령행 편집 등을 지원.
C Shell 1978년 빌 조이에 의해 개발
C언어를 기반으로 개발.
히스토리 기능, 별명 기능, 작업 제어 등.
(명령어 편집기능 X)

tcsh 1975년 켄 그리어에 의해 개발
1981년 C셸과 통합해서 탄생.
TC셸 - The Enhanced C Shell (강화된 C셸)
명령어 완성기능, 명령행 편집 기능 추가.
ksh 1983년 데이비드 콘에 의해 개발
작업제어, 별명기능, 히스토리 기능, 명령행 편집 기능, 명령행 완성 기능등 제공.

셸 확인

현재 사용 중인 셸을 확인하려면 'echo $SHELL' 이라고 실행하면 확인 가능하다.

현재 변경가능한 셸의 확인은 'chsh -l' (Change Shell in Linux) 또는 'cat /etc/shells'로 확인가능.

 

셸 변경

명령행에 chsh를 입력하면 사용자 암호를 입력하고, 셸의 절대 경로를 입력하면 변경되어, 다음 로그인부터 적용.

 

현재 사용중인 셸 확인하기

'grep [username] /etc/passwd'를 입력

7번째 필드 확인하기.

 

환경변수

셸의 환경을 정의 하는 변수.

예를 들어 'ls'명령어를 통해 디렉토리의 파일 리스트를 뽑아낸다. ls명령어는 /bin/ls에 담겨있음에도 불구하고 셸 어디서나 ls명령어를 사용할수있다. 이것을 환경변수라고 할 수 있다.

 

주요 환경변수

변수 내용
HOME 사용자의 홈 디렉터리
PATH 실행 파일을 찾는 디렉터리 경로
LANG 셸 사용시 기본으로 지원되는 언어
TERM 로그인한 터미널 종류
PWD 사용자의 현재 작업 디렉터리
SHELL 사용자의 로그인 셸
USER 사용자의 이름
DISPLAY X에서 프로그램 실행 시 출력되는 창
PS1 Prompt변수
PS2 2차 Prompt변수 
HISTFILE 히스토리 파일의 절대 경로
HISTSIZE 히스토리 파일에 저장되는 명령어의 개수 
HISTFILESIZE 히스토리 파일의 파일 크기
HOSTNAME 시스템의 호스트명
MAIL 도착한 메일이 저장되는 경로
TMOUT 사용자가 로그인한 후 일정 시간 동안 작업을 하지 않을 경우에 로그아웃시키는 시간 (초 단위)
UID 사용자의 UID

등이 있다.