Shell

 

Shell이란 무엇인가?

간단히 정의를 하자면 사용자의 명령을 해석하여 커널에 전달하여 주고, 명령을 실행시켜 주는 명령어 해석기(Command Interpreter)입니다.

명령어와 프로그램을 실행할 때 사용하는 인터페이스이며,  좀 더 자세히 말하면 Shell은 커널(Kernel)과 사용자간의 다리역할을 하는 것으로 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행하는 역할을 합니다.

사용자가 유닉스 시스템에 접속하면 바로 Shell 상태로 들어가게 됩니다. 간단한 명령인 ls 명령어를 실행시켜 보면, 바로 파일리스트가 출력됩니다. 이렇게 명령의 결과를 볼 수 있는 것은 그 짧은 시간에 Shell이 명령을 해석해서 커널을 거쳐 뿌려주는 것이죠. Shell이 단지 명령 해석 역할만 하는 것은 아닙니다. Shell을 잘 이용하면 시스템 사용을 편리하게 할 수 있습니다. [그림1]은 커널에서부터 사용자 로그인후 Shell 활성화 까지 보여줍니다.

[그림1]

시스템이 부팅하면, init 프로그램이 돌면서 /etc/inittab 파일을 검색합니다. init은 getty 프로그램을 호출하여 터미널화면에 login 프롬프트를 뛰우죠. 사용자의 아이디를 입력한 후 패스워드를 입력하면, getty는 login을 호출하고, login은 /etc/passwd 파일에서 패스워드가 일치하는지를 검색합니다. 만일 패스워드가 틀리면 다시 login 프롬프트를 뛰우고, 패스워드가 일치하면 사용자의 홈디렉토리로 위치시키고 시작프로그램 제어를 맡습니다. 처음 시스템에 접속하여 인증을 받은 후 뜨는 프롬프트는 자신이 사용하는 Shell의 프롬프트이고, 위치는 자신의 홈 디렉토리입니다.

현재 자신이 사용하는 Shell이 무엇인지 알아보려면 다음 명령어를 입력하면 됩니다.

echo $SHELL

 

Shell의 기능

  • 사용자와 커널 사이에서 명령을 해석해 전달하는 명령어 해석기 기능이 있습니다.
  • Shell은 자체 내에 프로그래밍 기능이 있어서 프로그램을 작성할 수 있고, Shell 프로그래밍 기능을 이용하면 여러 명령을 사용해 반복적으로 수행하는 작업을 하나의 프로그램으로 제작 할 수 있습니다. Shell 프로그램을 Shell 스크립트라고 부릅니다.
  • 사용자 환경 설정의 기능: 초기화 파일 기능을 이용해 사용자의 환경을 설정할 수 있습니다. 로그인 할 때 이 초기화 파일이 실행되서 사용자의 초기 환경이 설정됩니다. Shell을 공부하는데 가장 중요한 것 중 하나가 환경변수의 이해입니다.

 

Shell의 종류와 특징

Shell은 커널에서 분리된 별도의 프로그램이어서 다양한 종류의 Shell이 존재하고 현재까지도 지속적으로 개발되고 있습니다.

 

Bash

리눅스의 표준 Shell입니다.

1989년 브라이언 폭스가 GNU프로젝트를 위해 개발한 배시Shell은 shShell을 기반으로 만들어졌습니다. korn Shell과는 다르게 무료였으므로 급속히 전파되었습니다.

일반 유저는 $ 프롬프트를 사용하고 root 유저는 # 프롬프트를 사용합니다.

Bash의 특징
  • Alias 기능 (명령어 단축 기능)
  • History 기능 ( ↑ 또는 ↓ )
  • 연산 기능
  • Job Control 기능
  • 자동 이름 완성 기능 (tab)
  • 프롬프트 제어 기능
  • 명령 편집 기능

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다