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

리눅스마스터1급 : 쉘 ( Shell ) 의 종류

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: ( Shell ) 의 종류

 





1) 쉘의 종류와 선택

 

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

 

 

 

 

현재 리눅스에서 사용 가능한 쉘은 기본적으로 다음과 같다.

 

 

 

 

 

 

쉘 계열의 쉘



이름

개발자

개발연도

특징

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.

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

 

 

 

 

 

 

리눅스 환경에서는 기본적으로 본 쉘을 기반으로 한 Bash쉘이 주로 사용된다.

 

 

 

 

이에 대해 유닉스에서는 기본적인 본 쉘의 기능을 확장한 콘 쉘이나 C 쉘이 많이 사용된다.

 

 

 

 

 

쉘은 편리한 사용자 환경을 위해 다양한 변종이 나오고 있다.

 

 

 

 

shell은 약간 다른 사용자 환경을 제공하는데 예를 들면 cshhistory 기능과 kshhistory 기능은 서로 다른 키로 호출을 한다.

 

 

 

 

또는 shell program에 있어서 기능상의 차이가 날 수도 있는데 이는 shell이 어느 쪽 기능을 강화했는가 하는 차이이다.

 

 

 

 

cp, ls. dir 등과 같은 일반적인 명령어들은 쉘과 상관없이 사용할 수 있으므로, 쉘 스크립트를 작성하거나 쉘의 향상된 기능을 사용하려고 할 때에는 쉘의 특성이나 기능을 고려하여 달리 선택할 수 있을 것이다.

 

 

 

 

그러므로 사용자는 자신의 편의에 맞추어 쉘을 선택하여 사용하면 된다.

 

 

이 책에서는 Bash 쉘 환경을 기준으로 설명하도록 한다.

 

 

 

 

이 쉘은 sh, 즉 본 쉘을 기본으로 하기 때문에 본 쉘의 기능을 그대로 가지고 있고, 콘 쉘과 C 쉘의 특징적인 기능들도 가지고 있다.

 

 

 

 

그리고 대부분의 유닉스 환경에서 사용할 수 있고 윈도우즈 환경에서도 사용이 가능하다.

 

 

2) 쉘의 내

 

Bourne Shell

Linux를 사용하면서 일반적으로 가장 많이 사용된다고 볼 수 있는 shell은 개발자(Steven Bourne ; Bell 연구소)의 이름을 따라 명명된 Bourne shell이다.

 

 

 

 

1979년에 개발되고 실행 파일이 /bin/shBourne shell의 최신판은 모든 Linux 시스템에서 사용할 수 있으며 Bourne shell 프로그램의 커맨드명은 “sh”이다.

 

 

 

 

Bourne shell보다는 최근에 개발된 C 쉘이나 Korn 쉘과 기능적인 면을 비교해 보면 미흡한 점이 있다.

 

 

 

 

그 중 가장 큰 단점으로 상호 대화식(interactive) 방식을 취하고 있지 않다는 점이다.

 

 

 

 

이러한 상호 대화식 방식을 사용하고자 한다면 쉘을 바꿔서 작업하는 것이 좋을 것이다.

 

 

 

 

, 비록 Bourne shellLinux 시스템에서 가장 널리 사용되는 사용자 인터페이스 프로그램이긴 하지만 사용자는 다른 shell을 사용할 수 있다.

 

 

 

 

 

 

C Shell

shell은 표준으로 제공되는 Bourne Shell 외에 많이 사용되고 있는 ShellC Shell이다.

 

 

 

 

C Shell의 프로그램명은 “csh”이다.

 

 

 

 

C Shell은 원래 버클리 버전 UnixShell로 개발된 것이며, 1981년에 개발되고 실행 파일은 /bin/csh이며 Bourne Shell과 매우 유사하다.

 

 

 

 

사실 두 Shell의 대부분의 커맨드는 완전히 동일하다.

 

 

 

 

그러나 C Shell은 커맨드 구조에서 작업용 언어로 가장 많이 사용하는 언어인 C 언어와 유사하고, 몇 가지 프로그램 개발에 편리한 기능도 내장하고 있어서 많이 보급되었다.

 

 

 

 

현재 쓰이고 있는 Linux 시스템에 C Shell이 존재하고 Bourne Shell을 사용하던 도중에 C Shell을 쓰고 싶으면 csh 명령을 쓰면 된다.

 

 

 

 

만일 현재 사용중인 Shell이 어떤 Shell인지 알고자 할 경우는 명령어 ps를 통해서 알아낼 수 있다.

 

 

 

 

cshC Shell이며 shBourne Shell이다.

 

 

 

 

만일 로그인 쉘로 C Shell을 이용하고 싶으면 /etc/passwdvi 편집기를 사용하여 passwd 파일을 연 뒤 맨 윗 라인의 root:x:0:0:root:/root:/bin/bash에서 /bin/bash/bin/csh로 수정하고 재부팅하면 되는데 # echo $SHELL 명령으로 로그인 쉘이 csh로 바뀐 것을 확인할 수 있다.

 

 

 

 

 

 

Korn Shell

 

Korn Shellksh라는 약자로 부르기도 하며, David Korn에 의하여 1981년에 개발된 Unix 운영체제의 명령어 해석기 프로그램이며 실행 파일은 /bin/ksh이다.

 

 

 

 

Korn ShellUnix에서 제공되는 원래의 쉘과 호환성이 있으며, 사용하기 편리하고 기능이 탁월하기 때문에 널리 사용되고 있다.

 

 

 

 

일반적으로 유닉스에서 가장 많이 사용되고 있는 쉘이며, C의 혈통을 잇고 있다.

 

 

 

 

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

 

 

 

 

Bash Shell

 

BashBrian fox 외 몇몇 사람에 의해 1989년에 개발되었으며 실행 파일은 /bin/bash이다.

 

 

 

 

그리고 sh-호환의 명령 언어 해석기로서 표준 입력 또는 파일로부터 읽어들인 명령을 실행하고 또한 Korn (ksh)C (csh)로부터 유용한 기능을 도입하였다.

 

 

 

 

IEEE POSIX 쉘과 도구 명세(IEEE Working Group 1003.2)에 호환되도록 쉘을 구현하겠다는 목표를 가지고 있다.

 

 

 

 

처음 로그인을 하였을 때 디폴트로 주어지는 쉘이 Bash이며, 또 여러 글자 옵션을 해석하며 이 옵션을 인식시키려면 명령 행에서 단일 글자 옵션보다 앞에 적어야 한다.

 

 

 

 

 

 

 

 

 

 

 

Bourne ShellC Shell을 비교 평가하자면, C Shell이 대화형 작업에 있어서는 Bourne Shell에 비해 더욱 편리한 기능을 가지고 있다는 장점이 있지만 프로젝트나 기타 프로그래밍 작업을 할 경우에는 Bourne ShellC Shell보다 우수하다.

 

 

 

 

이 두 쉘의 이러한 차이점에도 불구하고 두 쉘이 제공하는 공통 기능이 여러 가지가 있다.

 

 

 

 

우선 다음은 이 두 쉘들이 제공하는 공동의 기능을 열거한 것이다.

 

파이프(Pipe)

Shell 변수의 운용

명령어의 입력과 수행

백그라운드(Background) 작업 처리

시작 파일(Startup File)의 수행

표준 입출력의 변경 : Redirection

명령어 치환 : Command Substitution

명령어의 그룹화 : Grouping Commands

명령어의 순차 처리 : Commands Sequences

메타 문자(Metacharacter)의 처리 : Wildcards

 

 

 

 

 

 

 

쉘의 설정 파일 및 변경

 

 

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

 

 

 

 

 

 

 

# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/bin/tcsh

/bin/csh

/bin/ksh

 

 

 

 

 

 

사용자가 사용하는 쉘 확인하기/etc/passwd 파일에서 사용자가 기본적으로 사용하는 쉘이 설정되어 있다.

 

 

 

 

마지막 항목(/bin/bash)이 사용자가 사용하는 쉘을 의미한다.

 

 

 

 

이 부분을 /bin/false로 변경하면, 명령어를 처리하는 쉘을 얻지 못하므로 어떤 명령도 수행할 수가 없게 되고 로그인도 할 수 없다.

 

 

 

 

 

 

 

# grep sulinuxer /etc/passwd

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

 

 

 

 

 

 

 

쉘의 변경사용하고자 하는 쉘을 변경하고자 하면 먼저 사용중인 쉘을 확인한다.

 

 

 

 

사용중인 쉘의 확인은 “echo $SHELL” 명령으로 한다.

 

 

 

 

그리고 사용자는 잠시 사용하고자 하는 쉘로 변경하기 위해 원하는 쉘의 이름을 이용하여 해당 쉘을 실행하면 된다(쉘을 종료할 때에는 exit 명령을 사용한다).

 

 

만약 사용자가 기본으로 사용하는 쉘(로그인 쉘 또는 기본사용 쉘이라고 한다)을 변경하려면 chsh 명령을 사용하거나 /etc/passwd 파일의 쉘 부분을 변경한다

 

 

(이 경우 시스템을 재로그인해야 변경된 사항이 적용된다). 이와 관련한 상세한 사항은 이후에 다시 다루도록 한다.

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,056 명
  • 현재 강좌수 :  35,910 개
  • 현재 접속자 :  192 명