1. 시작하기 [UNIX/Linux 소개 및 특징, 쉘의 역할과 특징, 쉘의 종류, 쉘 스크립트란?, 쉘 스크립트의 이점]



[UNIX/Linux 소개 및 특징]
UNIX
UNIX는 1969년 AT&T 벨연구소의 직원인 켄 톰슨, 데니스 리치, 더글라스 매클로리등이 최초로 개발하였다.

(켄 톰슨과 데니스 리치)
이후 C언어로 재작성되어 다양한 플랫폼에 이식될 수 있도록 보완되었다.

벨 연구소는 대학과 연구기관에 UNIX를 활용할 수 잇도록 라이센스를 제공하였다,
버클리 대학교에서 UNIX에 네트워크 프로토콜인 TCP/IP둥 다양한 기능을 보강하여 BSD(Berkeley Software Design) 배포본을 제작하고 이후 파생되는 많은 UNIX에 영향을 끼쳤다.
Linux

(리누스 토발즈)
1991년 리누스 토발즈라는 핀란드 헬싱키 대학의 대학원생에 의해 커널이 개발된 이래,
1984년 부터 리처드 스톨만에 의해 추진된 GNU프로젝트의 다양한 소프트웨어들이 합쳐진 운영체제가 Linux이다.
현재는 X-Window를 기반으로 하는 GNOME과 KDE등 다양한 데스크톱 환경과 수많은 응용프로그램이 실행될 수 있도록 발전하고 있다.
또한 개인용 데스크톱 환경뿐만 아니라 안드로이드 등 스마트폰에서 부터 기업용 엔터프라이즈 환경에 이르기까지 다양한 플랫폼에 이식되어 활용 중이다.

대표적인 리눅스 배포본에는 데비안, 레드햇, 슬렉웨어, SUSE, 유분투, 젠투가 있으며 그밖에도 다양한 배포본들이 파싱되어 개발되고 있다.

 
[쉘의 역할 및 특징]
쉘 스크립트를 알아보기 전에 그 기반이 되는 쉘에 대해 알아보면,
일반적으로 쉘은 운영체제에서 커널과 사용자 사이의 인터페이스, 즉 가교 역할을 하는 프로그램으로, 운영체제의 내부 명령어나 응용프로그램을 실행하는 것을 지원한다.

(시스템의 구성)
시스템을 전체적으로 보면 운영체제는 결국 하드웨어의 한 부분인 저장장치의 일부분에 저장된다.

운영체제를 좀 더 세부적으로 살펴보면, 운영체제가 설치된어 잇는 저장장치를 비롯하여 모니터, 그래픽카드, nic등 시스템에 직간접적으로 연결되는 하드웨어를 통제하는 커널과 이러한 커널과 사용자 및 응용 프로그램 사이에서의 명령 전달을 담당하는 쉘로 구분할 수 있다.

많은 사람들은 쉘 이라고 하면 검정 바탕에 흰색 글씨로만 구성된 터미널을 떠올린다.
실제로 많은 사용자가 사용하는 Windows 계열의 운영체제도 CUI기반의 명령 프롬프트와 GUI 기반의 탐색기를 모두 제공한다.

반대로 UNIX 및 Linux에서도 텍스트 기반의 쉘 환경 외에 그래픽 기반의 쉘 환경을 제공하고 있다.
IBM의 AIX와 SUN의 Solaris처럼 잘 알려진 UNIX의 쉘 환경 및 많은 사용자가 사용중인 Linux 배포본인 Cent OS의 쉘 환경이다.

[쉘의 종류]
위에서 처럼 GUI기반과 CUI기반의 쉘로 나눌수 있지만 UNIX./Linux 환경에서 주로 활용할 쉘들에 대해서 알아보면,

1974년 Steve R. Bourne이 $ 프롬프트를 기본으로 하는 Bourne Shell(sh)라고 부르는 UNIX 쉘을 만든 이래도 K쉘, Z쉘 등 수십종의 쉘이 제작되어 활용되고 있으며, 주요 쉘의 종류를 다음과 같이 구분할 수 있다.

 구분

개발자 

설치 위치 

설명 

sh 

Stephen Courne 

/bin/sh 

대부분의 UNIX 및 Linux에 설치되어 있는 쉘 

bash 

Brain Fox, Chet Ramey 

/bin/bash 

Linux의 기본 쉘로 sh와 호환 

ksh 

Dacid Korn 

/bin/ksh 

1980년대 벨 연구소에서 개발, 부동 소수점 계산이 가능 

csh 

Bill Joy 

/bin/csh 

C언어와 비슷한 스타일로 Script를 작성 가능 

tcsh 

Ken Greer  

/bin/tcsh

csh에 커맨드 히스토리 등 추가 기능을 보완 


지금 접속 중인 시스템의 쉘의 종류를 확인하려면 ps -p $$ 명령을 사용하면 된다.
추가적으로, /etc/passwd 파일의 내용 중 마지막 필드에 기술된 쉘 경로를 보고도 확인할 수 있다.

관리하는 시스템에 항상 자신이 원하는 쉘이 설치되어 있을 거라고 생각하면 안 된다.

[쉘 스크립트란?]
쉘 스크립트는 쉘이나 명령 줄 인터프리터에서 돌아가도록 작성되었거나 한 운영체제를 위해 작성된 스크립트이다.
쉘 스크립트가 수행하는 일반 기능로는 파일이용, 프로그램 실행, 문자열 출력 등이 있다.

위의 내용처럼 쉘 스크립트를 "운영체제의 쉘에서 사용할 수 있는 명령어 및 환경 변수 등을 모아서 만든 배치파일"로 정의할 수 있다.
쉘 이란 사용자가 내린 명령어를 해석하고 그 결과를 커널에게 전달하는 프로그램이라고 보면 된다.

[쉘 스크립트 활용 시 이점]
1. 반복 작업에 대한 자동화가 가능
쉘 스크립트를 활용하는 가장 큰 장점은 관리자의 번거로움을 덜 수 있다는 것.
즉, 스케줄 설정과 같이 주기적으로 수행하는 단순한 작업에 쉘 스크립트를 활용하면 관리자가 일일이 타이핑하지 않아도 된다.

2. 기존의 명령어를 사용자만의 명령어로 보안
기본적으로 UNIX/Linux는 POSIX라는 표준 규약을 준수하지만 모든 명령어가 통일된 것은 아니기 때문에 운영체제 마다 명령 옵션이나 결과 형식에 약간의 차이가 있다.
운영체제에서 제공하는 며영어 실행 결과를 사용자가 원하는 형식으로 재구성해야 할 때가 있다.
이런 경우, 쉘 스크립트를 이용하여 기존의 명령어의 결과를 원하는 형태의 결과로 표시할 수 있으며, 이를 위해 입출력 재지정(redirection)을 활용하면 된다.

3. 손쉽고 빠른 개발 및 보완이 가능
기본적으로, 쉘 스크립트 자체는 운영체제의 명령어 등을 묶어서 프로그램화한 후 인터프리터 방식으로 수행되기 때문에 별도의 컴파일러를 설피할 필요가 없으며, 당연히 컴파일 과정도 불필요하다.
운영체제의 명령어들을 잘 알고 있다면 손쉽고 빠른 개발 및 보완이 가능하다.


myoskin