쉘 스크립트란 무엇인가?

Posted by taeho Tae-Ho
2013.09.17 10:24 운영체제

예전의 포스트에서 운영체제의 쉘(shell)에 대해 설명했다.


이전 글 : [Unix / Linux] 쉘을 이해하자. 


그리고 간단하게 쉘의 환경변수에 대한 설명도 했다. 운영체제의 개념과 쉘의 개념에 대해 이해했다면 다음은 쉘스크립트를 공부하는 것이 일반적인 Unix/Linux 운영체제를 공부하는 순서라고 할 수 있다.


  • 쉘 스크립트(Shell Script)란 ?

쉘 스크립트를 이해하려면 먼저 스크립트(Script)가 무엇인지 이해해야 한다. 스크립트란 일반적으로 인터프리트(interpret) 방식으로 동작하는 컴파일되지 않은 프로그램이라고 이해하면 된다. 즉 "프로그램의 한 라인을 읽어 해석하고 실행하는 과정을 반복하도록 만들어진 프로그래밍 언어로 작성된 컴파일되지 않은 파일에 저장된 프로그램"이라는 의미다. 조금 어려운가? 그렇다면 다음과 같이 이해하자.


텍스트 형식으로 저장되는 프로그램으로서 한줄씩 순차적으로 읽어 실행되도록 작성된 프로그램이다.


스크립트는 위의 정의(?)와 같다. 그렇다면 쉘 스크립트는 스크립트와 무엇이 다를까? 아마도 이런 말들을 들어보았을 것이다.


쉘 스크립트, 펄 스크립트, 자바 스크립트 등등등....


스크립트라는 단어 앞에 여러가지 수식어(?)가 붙는다. 이 수식어는 바로 스크립트를 읽어 실행해주는 인터프리트 엔진을 말한다고 이해하면 된다. 즉 쉘스크립트는 운영체제의 쉘 즉 bash, ksh, csh 등이 읽어 실행해주는 스크립트 언어이고 펄 스크립트는 perl 이라고하는 인터프리트 엔진이 읽어 실행해주는 스크립트 언어다. 그렇다면 자바 스크립트는 누가 읽어 실행해 주는 스크립트 언어일까? 그것은 바로 인터넷익스플러어와 같은 웹브라우저다. 물론 크롬 브라우저도 자바스크립트를 읽어 실행해준다.


각각의 스크립트 언어들은 문법이 모두 다르기 때문에 호환되지 않는다. 또한 실행파일을 만들때 작성되는 C언어와도 다르다. 


다음은 C언어와 쉘스크립트로 된 똑같은 기능을 하는 프로그램이다.



C 언어와 Shell스크립트 비교


두 프로그램 모두 실행하면 화면에 "hello~ c~"와 "hello~ script~" 한줄을 출력하는 프로그램이다.  하지만 두 프로그램이 파일로 저장된 뒤 실행되기 까지는 여러 차이점이 있다. 그 차이점을 알아보면 다음과 같다.


  • C언어로 작성된 프로그램은 컴파일(Compile)하여 기계어로 변환된 목적파일(Object File)로 만들어준 뒤 링크(Link)과정을 거치고 실행퍼미션(x)을 주어야만 실행이 가능하지만 쉘스크립트로 작성된 파일은 이러한 과정이 필요없고 실행퍼미션만 주면 된다.
  • C언어로 작성된 프로그램은 실행을 위해 컴파일되면 vi, cat 과 같은 명령으로 내용을 확인할 수 없는 바이너리 구조로 변형되지만 쉘 스크립트는 파일의 변환과정이 없다.
  • C언어로 작성된 프로그램은 기계어로 변환되었기 때문에 커널에 의해 실행되지만 쉘 스크립트는 쉘(bash, sh, ksh) 이 한줄씩 읽어 실행한다.
  • C언어로 작성된 프로그램은 정식 프로세스로 생성되지만 쉘 스크립트로 작성된 프로그램은 이름은 보이지만 정식 프로세스는 아니다.

아래는 위의 두 프로그램의 작성과 파일정보를 확인하는 화면이다. 초심자라면 리눅스에서 똑같이 한번 테스트해보는 것도 좋겠다.


hello.c 의 컴파일은  hello.c를 작성한 뒤 다음의 명령을 통해 수행하면 된다.


#  gcc -o hello hello.c

이 명령을 수행하면 실행파일 hello 가 생성된다.


이 내용을 완전하게 이해했다면 쉘 스크립트 작성을 공부할 준비가 어느정도 되었다고 할 수 있다.


다음글 : 쉘스크립트에서의 사칙연산과 문자열 자르기

신고
이 댓글을 비밀 댓글로