본문 바로가기

개발/Linux

[Linux] 리눅스 셸 (Shell) 의 이해와 종류, Shell 확인, 변경





리눅스 셸 (Shell) 의 이해와 종류, shell 확인, 변경



셸 개요

리눅스는 GUI 환경도 있지만 GUI 환경이 제공되기 이전 터미널 환경을 이용하여 명령어를 직접 타이핑하여 컴퓨터를 운용하였다. 현재 많은 리눅스 GUI 버전이 생겼지만 아직도 터미널환경을 사용하는것이 GUI 처럼 직관적이지는 않지만 강력한 기능을 제공하기 때문에 여전히 많이 사용되고 있으며 이때 터미널에 입력한 명령을 해석하고 관리하는 프로그램을 셸(shell) 이라고 한다. 

셸은 사용자 커널 사이에 연결시켜주는 역활을 하며 사용자가 입력한 명령을 해석하여 운영체제가 해당명령을 알아들을 수 있게 해준다.



셸의 종류


셸 이름 

 실행 명령

  설명

 Bourne Shell

 sh

  벨 연구소의 스티브본 (Stephen Bourne) 개발, 많은 셸 스크립트의 기반이 되는 셸

 C Shell

 csh

  C언어 구문과 유사, Bourne Shell 을 확장하여 히스토리, 작업제어, 엘리어스 등 기능 추가     개발자들에게 유용한 기능들을 제공한다.

 TC Schell

 tcsh

  C Shell 에 명령 행 완성 과 명령 행 편집 기능을 추가

 Korn Shell

 ksh

  Bourne Shell 가 호환되며 C Shell 의 많은 기능을 포함,  Unix 계열에서 많이 사용된다. 

 Bourne Again Shell (bash)

 bash

 리눅스에서 가장많이 사용되는 셸로 Bourne 셀을 토대로 C셸과 Korn Shell 의 기능들을 통합시켜 개발되었다. 



셸 확인


현재 내 운영체제에 기본셸을 확인하고 싶다면 아래와 같이 명령을 입력하여 확인할 수 있다.


$ grep cent /etc/passwd
cent:x:500:500:cent:/home/cent:/bin/bash

grep 명령은 파일(/etc/passwd) 에서 문자열(cent) 가 포함된 라인을 보여준다.

cent 는 계정명이며 /etc/passwd 는 계정 정보가 저장된 파일이다. 따라서 cent 라는 계정의 정보가 출력되며 출력된 내용에는 bash 라고 적혀있는것을 보아 해당 계정의 기본셸은 bash 라는것을 알수있다.


셸 변경


위와같이 저장되어 있는 셸을 변경하고 싶다면 아래와 같이 명령어를 입력하여 변경할 수 있다.

 

$ chsh 
Changing shell for cent.
Password: 
New shell [/bin/bash]: /bin/csh
Shell changed.

$ grep cent /etc/passwd
cent:x:500:500:cent:/home/cent:/bin/csh


chsh 명령어는 셸을 변경하는 명령어로 chsh 를 입력하면 아래와 같이 Password: 를 입력하라고 나오는데 사용자의 패스워드를 입력하면된다. 그후 변경하려는 셸의 종류를 입력하면된다. 변경가능한 셸의 종류는 아래와 같이 확인할 수 있다.


셸 목록 확인


$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh


etc 디렉터리는 시스템 설정 파일이 존재하는 디렉터리 이며 리눅스 시스템에서 가장 중요한 디렉터리 이기도 하다. 그 안에는 shells 가 있는데 cat 명령어 를 사용하며 해당 파일을 읽게되면 Shell 목록을 알수있다.