[Linux] 쉘 Shell 이란? & 심볼릭 링크 변경

2011. 12. 17. 19:11개발/서버

쉘(shell, : 쉘, 자령해석프로그램)은 운영제체 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 쉘은 사용자와 운영체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름이 붙었다.


컴퓨터에서 쓰이는 언어와 우리가 일상생활에서 사용하는 언어는 다르다.
한국인은 한국어를, 미국인은 영어를 쓰듯이 컴퓨터가 이해 할 수 있는 것은 오직 숫자 0과 1뿐이다. 그래서 사람들이 컴퓨터에게 어떠한 작업을 하도록 명령을 내리리면 0과 1로 이루어진 명령어로 지시해야 한다. 그렇다고 해서 우리가 컴퓨터에게 명령을 내릴때 0과 1로 이루어진 명령을 내리지는 않는다. 이렇게 할 수 있는 이유는 쉘이 있기 때문이다.
쉘은 사용자에게 명령어를 입력 받아, 컴퓨터가 이해할 수 있는 0과 1로 이루어진 명령어로 바꾸어 커널에게 전달해주는 의사소통의 역할을 해준다.




Ubuntu에서 제공하는 Shell 종류 및 특징
 
  Ubuntu에서는 데비안 계열의 리눅스로서 데비안에서 제공해 주는 모든 Shell을 제공해 준다. 
기본으로 설정되어 있는 쉘은 bash 이다. 
 
1) BASH:: GNU Bourne Again Shell
  bash는 sh와 호환되는 명령어 인터프리터로 표준 입력이나 파일에서 읽어들인 명령을 실행합니다. bash는 또한 Korn 쉘과 C 쉘(ksh 및 csh)에서 유용한 특징을 받아들였습니다.
  bash의 구현은 IEEE POSIX Shell and Tools 명세(IEEE Working Group 1003.2)를 따릅니다.
  이안 맥도날드(Ian McDonald)가 만든 Programmable Completion Code는 이제 bash-completion 패키지에 들어 있습니다


2) SH:: Bourne Shell
  가장 처음 만들어진 쉘로 본쉘(Bourne Shell) /bin/sh (S.R. Bourne에 의해 만들어짐)이 있었다. 그것은  구조적인 문제를 해결할 수 있는 문법 언어를 내부적으로 갖추고 있는 매우 강력한 쉘이었으며, 그것은 특히 입력과 출력을 제어하기위한 기능과 익스프레션  매칭 기능을 가지고 있었다. 그러나 하나의 단점으로 인터랙티브 사용자에 대한 배려가 없다는 것이었다.(후에  이 문제점이 수정되었다.)


3) DASH:: Debian Almquist Shell, POSIX-compliant shell
  Dash는 본쉘이라 불리는 가장 처음 만들어진 본쉘을 바탕으로 데비안에서 POSIX를 만족하는 쉘로 개발되어진 쉘이다.

 
4) CSH:: C 스타일 문법을 가지는 쉘, BSD 시스템 표준 로그인 쉘
  C 쉘은 Bourne 쉘의 제한을 없애기위해 UCB에서 처음 개발 되었습니다. C 쉘의 유연성과 편리성(그 당시)은 ksh, bash, zsh 또는 tcsh같은 더욱 발전된 쉘이 나타나기 전까지 C 쉘을 빠른 속도로 최상의 쉘이 될 수 있도록 하였습니다. csh의 독창적인 특징은 후에 대부분 다른 쉘들로 통합되었습니다.
  이 패키지는 현재 OpenBSD 소스를 바탕으로 합니다.



5) KSH:: 실제 AT&T 버전의 Korn 쉘
  Ksh는 대화형과 쉘 스크립트 양쪽에서 사용할 목적으로 작성된 유닉스 명령어 해석기(쉘)입니다. ksh의 명령어 언어는 sh(1) 쉘 언어의 슈퍼세트입니다.
  1993년 버전에는 몇가지 새로운 기능이 추가되었습니다. 특히 상용 유닉스와 함께 배포되는 1988년 버전 이후부터은 스크립팅과 관련된 많은 기능이 새로 추가되었습니다. 예로, 어휘의 스코프, 합성 변수, 결합 배열, 이름 참조 그리고 부동 소수점 연산등이 새로운 기능으로 추가되었습니다.




6) TCSH:: 버클리 csh의 확장 버전, TENEX C 쉘
  TENEX C 쉘은 버클리 유닉스 C 쉘의 확장된 버전입니다. 이 쉘은 4.4BSD C 쉘의 모든 특징을 포함하며, 추가로 명령행 편집, 프로그램 가능한 단어 완성, 맞춤법 교정과 그외 여러가지를 지원합니다. tcsh 홈페이지 http://www.tcsh.org/Home



7) 그 외의 Shell
a. ash:: compatibility package for dash
b. fish:: a friendly interactive shell
c. mksh:: enhanced version of the Korn shell
d. pdksh:: A public domain version of the Korn shell
e. posh:: Policy-compliant Ordinary Shell
f. psh:: interactive shell with the power of perl
g. sash:: Stand-alone shell
h. zsh:: A shell with lots of features
i. rc:: an implementation of the AT&T Plan 9 shell   

 

 

SH

CSH

TCSH

KSH

BASH

명령 히스토리

No

Yes

Yes

Yes

Yes

명령의 별명

No

Yes

Yes

Yes

Yes

쉘 스크립트

Yes

Yes

Yes

Yes

Yes

파일이름 완성

No

Yes

Yes

Yes

Yes

명령행 편집

No

No

Yes

Yes

Yes

job 제어

No

Yes

Yes

Yes

Yes

시작문자

$, (#)

%(#)

>(#)

$(#)

$(#)



터미널을 실행 후 'echo $SHELL' 이라는 명령어를 실행해 보자

기본으로 bash 가 설정되어 있다. 

※ 한 가지 팁으로 

흔히 쉘 스크립트의 첫 머리에 #!/bin/sh 을 사용한다. 
여기서 주의할 점은 Ubuntu는 초기 심볼릭 링크가 /bin/sh 는 dash 로 되어 있다는 점이다. 
바로 이 부분이 에러를 만드는 원인이 되기도 한다. 

심볼릭 링크를 바꾸는 방법은 터미널 창에
#sudo dpkg-reconfigure dash 
를 입력하면 된다. 

패스워드를 입력한 후 화면이다.

<예> 를 선택하면 
심볼릭 링크가 dash가 되고,

<아니오> 를 선택하면 bash 가 된다. 

확인하는 커맨드는 ls -al /bin/sh 이다. 

'개발 > 서버' 카테고리의 다른 글

네트워크 상태 보기! - TCP View 편 (1)  (0) 2011.12.18
WebDAV  (0) 2011.12.17
데이터 파일경로 php 스크립트 막기  (0) 2011.12.17
아파치 로그분석  (0) 2011.12.17
아파치 로그관리 cronolog  (0) 2011.12.17