본문 바로가기

Learning/└◆Shell Scripts

[ShellScripting] 유닉스 셸

________________________________________________________________________________

 

 

1 부 본쉘

 

1 장 유닉스 쉘

2 장 본쉘의 개요

3 장 본쉘의 동작

4 장 유닉스 명령어

5 장 본셀의 특징

6 장 본셀 프로그래밍

 

________________________________________________________________________________

 

 

 

 

1 장 유닉스 쉘

-----------------------

1. 쉘의 기능

2. 유닉스 쉘의 역사

3. 쉘의 종류

4. 쉘의 기능 비교

-----------------------

 

 

 

1

쉘의 기능

 

 

 

쉘은 유닉스 운영체제의 핵심인 커널과 사용자 사이의 인터페이스를 제공해 준다. 커널은 운영체제의 핵심 부분으로서 운영체제가 기동되면 메모리상에 상주하고 시스템 전반을 관리한다. 커널은 프로세스의 생성과 제어, 메모리 관리, 파일시스템, 통신 등 다양한 일을 담당한다. 커널은 디스크에 존재하는 다양한 프로그램(: 명령어, 스크립트)을 메모리상으로 불러 들어 실행하고 종표하면 메모리에서 제거한다.

 

쉘은 사용자가 로그인해서 사용하는 프로그램이다. 쉘은 명령행에서 입력되거나 스크립트 파일에서 읽어 들이는 명령어들을 해석함으로써 사용자와 커널이 서로 의사소통할 수 있도록 해준다.

 

쉘은 유닉스에서 ()명령어 해석기의 역할()프로그램을 할수 있는 언어로서의 특징을 가지고 있다. 쉘은 사용자가 로그인하게 되면 실행되는 프로그램이다. 쉘은 명령행에서 사용자가 입력하는 명령어와 디스크 내부에 존재하는 스크립트 파일등을 해석함으로서, 사용자와 커널이 서로 통신할 수 있도록 한다.

 

사용자가 로그인하게 되면 대화형 쉘이 시작되면서 입력을 기다리게 되고 명령어를 입력하면, 쉘은 ()명령행의 구문을 분석하고, ()와일드 카드, 리다이렉션, 파이프, 작업 제어 등을 처리한다. 그리고 ()명령어를 찾아보고, 존재하면 실행시킨다.

 

쉘의 중요한 특징이 2가지 있으며 쉘의 기능상의 특징을 다시 정리하면 다음과 같다.

Command-Line Interpreter - 쉘은 명령어 해석기의 역할을 가진다.

Programming Language - 쉘의 특징을 이용하여 프로그램을 작성할 수 있다.

 

User

 

User

 

user01, user02 .....

OS

 

Application

 

ls, find ......

 

shell

 

sh, csh, ksh, tcsh, zsh, bash ....

 

kernel

 

Solaris(unix, genunix)

H/W

 

H/W

 

CPU, Mem(RAM), Disk, I/O Device

 

 

[예제] 일반적인 명령어 입력

$ ls

$ pwd

 

위의 예제와 같이 명령어 프롬프트($)을 쉘 프롬프트($, #)라고도 부른다. 쉘은 쉘프롬프트 다음에 입력되는 사용자의 명령어를 기다리고 있다가 명령어가 입력되는 순간 토큰 단위(필드 단위)로 해석하여 커널에게 전달하고 커널은 적당한 하드웨어를 제어하여 사용자에게 출력하는 역할을 한다.

 

 

 

2

유닉스 쉘의 역사

 

 

 

유닉스 시스템이 발전 하면서 쉘도 같이 발전하기 시작했다. 본쉘은 유닉스 시스템에서 콘쉘은 System V 계열에서 C 쉘은 BSD 계열에서 발전 되어 왔다.

 

초기 유닉스에 내장되었던 쉘은 본쉘(sh)이다.

BSD 유닉스가 나오면서 내장되었던 쉘이 C(csh)이다.

System 유닉스가 나오면서 내장되었던 쉘이 콘쉘(ksh)이다.

C쉘의 업그레이드 버전의 쉘이 tcsh 쉘이고,

콘쉘의 업그레이드 버전의 쉘이 zsh이다.

배시쉘(bash)은 본쉘의 기능을 바탕으로 하여 콘쉘의 기능과 C쉘의 기능을 포함한 쉘이다. 유닉스 계열에서 사용하는 쉘중에서 가장 많은 기능을 제공하고 있다.

 

 

유닉스의 종류와 쉘의 상관 관계를 정리하여 보면 다음과 같다.

 

 

 

unix(1969)

System V 계열

BSD 계열

IBM

hp

Sun micros

System V release4

Linux kernel

GMU

Linux

 

 

 

 

3

쉘의 종류

 

 

 

 

쉘의 종류는 다음표와 같으며 각 쉘에 관한 자세한 설명이다.

 

쉘의 종류

설 명

sh(Bourne Shell)

최초의 유닉스 쉘로서 벨 연구소의 스티븐 본(Steven Bourne)에 의해 1979년 대중화된 유닉스 버전 7에 들어 있다.

솔라리스의 기본 쉘로서 시스템 관리 스크립트를 위한 표준 쉘이다.

본쉘은 알골(Algol)이라는 언어에 기반하고 있다.

실행시 참조하는 파일 : ~/.profile

프로그램 : /bin/sh (/usr/bin/sh), /sbin/sh

프롬프트 : $(일반사용자), #(root 사용자)

csh(C Shell)

1970년대 후반 버클리 대학의 빌 조이(Bill Joy)에 의해 작성되었으 며 2BSD 유닉스에 포함되어 출시 되었다.

BSD(Berkeley Software Distribution)의 일환으로 배포 되었다.

실행시 참조하는 파일 : ~/.cshrc

프로그램 : /bin/csh (/usr/bin/csh)

프롬프트 : %(일반사용자), #(root 사용자)

ksh(Korn Shell)

1980년대 후반 AT&T Bell 연구소의 데이비드 콘(David Korn)에 의해 개발되었다. 최조의 버전은 1988년에 출시된 유닉스 SVR4 배포판에포함되었다.

콘쉘(ksh)C(csh)에 비해 빠르고 본쉘(sh)로 작성된 스크립트가 실행되는 호환성을 가지고 있다.

실행시 참조하는 파일: ~/.kshrc

프로그램 : /bin/ksh (/usr/bin/ksh)

프롬프트 : $(일반사용자), #(root 사용자)

bash

(Bourne Again Shell)

GNU 프로젝트에서 나온 리눅스의 기본 쉘이며 브라이언 폭스 (Brian Fox), 쳇 레이미(Chet Ramey)등에 발전 되었다.

프로그램 : /bin/bash

프롬프트 : $(일반사용자), #(root 사용자)

기타

tcsh(Enhanced C Shell)

zsh

dtksh(Desktop Korn Shell)

jsh(Job Control Shell)

rsh(Restricted Shell)

각 쉘에 가장 자세한 정보를 확인 하기 위해서는 매뉴얼 페이지를 확인 한다.

sh(1) => # man sh

ksh(1) => # man ksh

csh(1) => # man csh

bash(1) => # man bash

4

쉘의 기능 비교

 

 

 

본셀, C, TC, 콘셀, 배시쉘의 기능을 비교하여 보면 다음과 같다.

 

기능

본셀

C

TC

콘쉘

배시쉘

디렉토리 스택 (pushd, popd)

×

명령행 편집

×

×

별명

×

작업제어

×

철자 정정

×

×

×

키 조합 설정

×

×

×

파일이름 완성

×

프롬프트 서식 설정

×

×

×

함수

×

×

향상된 패턴 검색

×

×

×

히스토리

×

X : 기능 지원하지 않음. : 기능 지원. : 사용자 설정을 통한 기능 지원.

bash 쉘에서 cdspellcd 명령어에서 사용하는 디렉토리 이름의 작은 철자 오류를 정정해 주는 shopt 옵션

이다.