강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터2급강좌 :쉘의 종류와 선택

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2급강좌 :쉘의 종류와 선택

 

 

쉘의 종류


쉘은 운영체제의 일부이면서 커널과 독립된 프로그램이기 때문에 각각의 특성을 가진 여러 가지 쉘들이 있으며, 사용자가 원하는 쉘을 선택하여 사용할 수 있다.

 

 

 

 

/etc/shells 파일을 열어 보면 현재 사용할 수 있는 쉘들의 경로가 설정되어 있다.

 

 

 

 

 

# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/bin/tcsh

/bin/csh

/bin/ksh

 

 

 

 

 

bourne 쉘 계열의 쉘

이름

개발자

개발연도

특징

sh

(bourne shell)

Steven Bourne

1979

가장 기본적인 쉘로 유닉스의 초기부터 사용되어 온 쉘이다.

 

 

 

 

스크립트를 지원한다.

ksh

(korn shell)

 

Dave Korn

1986

본 쉘을 확장한 쉘이다.

 

 

 

 

본 쉘의 명령어를 모두 인식하며, 명령어 히스토리(history) 기능과 엘리어스(alias), 작업 제어 등의 기능이 추가되었다.

 

 

 

 

일반적으로 유닉스에서 가장 많이 사용되는 쉘이다.

 

 

 

 

명령행 편집기능을 제공한다.

bash

(Bourne Again Shell)

Brian Fox

1989

리눅스에서 가장 많이 사용되는 쉘이다.

 

 

 

 

C 쉘과 콘 쉘의 장점을 결합하여 작성되었으며, Bourne 쉘 문법의 명령어 셋을 제공하여 Bourne Shell과 호환되는 쉘로 GNU 프로젝트에 의해 만들어지고 배포된다.

 

 

 

 

명령행 편집기능을 제공한다.

 

C 쉘 계열의 쉘

이름

개발자

개발연도

특징

csh

(C Shell)

Bill Joy

1981

명령행 편집기능을 제공하지 않는다.

 

 

 

 

C 언어 위주의 쉘로 처음 작성되었을 때에는 본 쉘이 가지고 있지 못한 기능들(작업제어, 명령어 히스토리등)을 가지고 있었기 때문에 많이 사용되었다.

tcsh

(TC Shell)

Ken Greer

1982

csh의 기능을 강화한 쉘이다.

 

 

 

 

확장 C Shell.

명령행 편집 기능을 제공한다.

 

 

 

 

 

 

 

 

 

 

 

Zshash 쉘은 현재 CentOS, SULinux, Asianux 등의 레드햇 계열의 리눅스 배포판에서는 기본으로 사용되지 않는다.

 

 

 

 

다음에 이들에 대해서 알아본다.

 

Zsh Zsh는 로그인쉘 및 쉘스크립트 명령어 프로세서로서 이용 가능한 유닉스 쉘이다.

 

 

 

 

표준 쉘들 중에서 zshksh와 가장 유사하지만 많은 개선들을 포함한다.

 

 

 

 

zsh는 명령행 편집, 내장 스펠링 수정, history 등의 기능을 가진다(출처: zsh man 페이지 <http://linux.die.net/man/1/zsh>).

 

ash ash는 추가적인 기능들이 없이 본 쉘에 가장 부합하는 쉘이다.

 

 

 

 

본 쉘은 상업적인 유닉스 시스템들에서 사용가능하므로, ash는 쉘 스크립트가 본 쉘에 잘 부합하는지 시험할 때 유용하다.

 

 

 

 

또한 이것은 다른 sh-호환 쉘에 비해 적은 메모리와 공간을 요구한다.(출처: <http://www.linuxfromscratch.org/blfs/view/6.1/postlfs/shells.html>)

 

 

 

 

 

로그인 쉘과 서브쉘리눅스에서 제공하는 쉘은 크게 로그인 쉘(login shell, 또는 기본사용쉘이라고도 한다)과 서브쉘(sub shell, 현재 사용중인 쉘이라고도 한다)로 나눌 수 있다.

 

 

 

 

 

 

로그인 쉘은 여러 가지 사용 가능한 쉘 중에서 한 가지를 지정하여 로그인시에 기본으로 지정하여 사용되는 쉘을 말한다.

 

 

 

 

사용자를 생성하면 “/etc/passwd” 파일에 그 정보가 등록되는데, 이 파일에 로그인 쉘이 설정된다.

 

 

 

 

 

 

 

 

 

# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

...중략...

distcache:x:94:94:Distcache:/:/sbin/nologin

named:x:25:25:Named:/var/named:/sbin/nologin

mysql:x:27:27::/home/mysql:/bin/bash

sulinuxer:x:500:500::/home/sulinuxer:/bin/bash

 

 

 

 

 

이에 대해 서브쉘은 로그인 쉘과 다르게 사용자가 필요에 따라 그때그때 임시적으로 변경하여 사용하는, 즉 현재 일시적으로 사용하는 쉘을 말한다.

 

 

 

 

왜냐하면 쉘마다 저마다의 기능과 사용법이 다르기 때문에 필요에 따라 잠시 다른 쉘을 사용할 때 사용한다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,787 개
  • 현재 접속자 :  256 명