Infrastructure/Linux

[Concept] Chapter 12 유닉스 쉘의 이해

Jinlib 2017. 12. 25. 01:30

선요약


목차

1. 유닉스 쉘의 기능과 종류
2. 콘쉘의 주요 기능
3. C 쉘의 주요 기능
※ 배시쉘은 다음장에서 다루도록 하자.


1. 유닉스 쉘의 기능과 종류

(1) 쉘

사용자 인터페이스를 제공하는 프로그램

(2) 쉘의 기능

1) 명령어 해석기 기능

    • 사용자와 커널 사이에서 명령을 해석하여 전달
    • 사용자가 입력한 명령이나 파일에서 읽어들인 명령을 해석하고 적절한 프로그램을 실행

2) 프로그래밍 기능

    • 쉘은 자체 내에 프로그래밍 기능이 있어 프로그래밍 작성가능
    • 여러 명령을 사용해 반복적으로 수행하는 작업을 하나의 프로그램으로 제작 가능
    • 쉘 프로그램을 쉘 스크립트라고 부른다

3) 사용자 환경설정 기능

    • 초기화 파일 기능을 이용해 사용자 환경을 설정
    • 명령을 찾아오는 경로 설정, 새로운 파일의 기본 권한 설정, 다양한 환경변수 설정 등 사용자별로 사용 환경의 특성을 초기화 파일에 설정가능
    • 로그인할 때 이 초기화 파일이 실행되어 사용자의 초기 환경이 설정됨

(3) 쉘의 동작 순서


(4) 쉘의 종류

1) 본 쉘(Bourne Shell : sh)

  • 최초의 본격적인 쉘로 1977년 Stephen Bourne이 개발
  • 시스템 관리 작업을 수행하는 많은 쉘 스크립트들은 본 쉘을 기반으로 작동한다.
  • 히스토리 기능, 앨리어스 기능, 작업 제어 등 사용자의 편의를 위한 기능을 제공 하지 않는다.
  • 대부분의 유닉스 시스템에 기본적으로 설치되어있으나, 솔라리스 11에서는 본쉘(/usr/bin/sh)이 콘쉘로 대체된다.

2) 콘 쉘(Korn Shell : ksh)

  • 1983년 AT&T 벨 연구소의 David Korn)이 개발했다.
  • 히스토리기능, 앨리어스 기능 등 C쉘의 특징들도 모두 제공하면서 처리 속도 또한 빠르다

3) C 쉘(C Shell : csh)

  • 1978년 캘리포니아(버클리)대학교에서 Bill Joy가 개발했다.
  • 본쉘의 기능을 확장한 것으로 앨리어스나 히스토리 같은 사용자 편의 기능을 포함했다.
  • 쉘 스크립트 작성을 위한 구문 형식이 C언어와 같아 C쉘이라 불린다.
  • 크기가 커지고 처리 속도도 느려졌다는 단점이 있지만, 편리한 기능이 때문에 일반 사용자가 즐겨 사용

4) 배시 쉘(Bourne Again Shell : bash)

  • 1988년 본 쉘을 기반으로 브라이언 폭스에 의해 개발
  • 본 쉘과 호환성을 유지하면서 C쉘, 콘 쉘의 편리한 기능도 포함한다.
  • GNU따르는 공개 소프트웨어, 리눅스의 기본 쉘로 동작하고 있다.


2. 콘쉘의 주요 기능

(1) 특징

1) 절대 경로

/usr/bin/ksh

2) 기본 프롬프트

      • 일반사용자 : $
      • root사용자 : #

(2) 환경설정

1) 환경설정 파일

      • 시스템 초기화 파일 : /etc/profile
      • 사용자 초기화 파일
        ~/.profile : 콘쉘을 사용하는 모든 사용자에게 기본으로 제공된다. 프롬프트, 명령어 경로가 같은 환경변수 설정을 저장
        ~/.kshrc : 필요에 따라 사용자가 생성하여 사용한다. 자식쉘에서도 실행되며 Alias 설정, set을 이용한 환경설정을 저장

2) 쉘 변수 설정

설정후 set으로 확인하는 모습

bash와 설정법은 동일하다 

3) 환경 변수 설정

export로 설정하고 env로 확인

bash와 설정법은 동일하다.

4) Alias의 설정과 삭제

초기화 파일 .kshrc에 저장하면 로그인 할때마다 앨리어스가 설정된다.
설정)

bash와 동일하게 설정할 수 있다. 변수 B는 위에서 설정한거와 같다.

삭제)

삭제 또한 bash와 동일하게 삭제할 수 있다.


(3) 히스토리 기능 - history

1) 기 능

      • 사용자가 입력했던 명령 목록을 저장했다가 다시 사용하는 기능
      • 히스토리파일은 ~/.sh_history에 저장된다.
      • HZ=[숫자] : 숫자만큼 명령을 저장한다.

2) 형 식

history 아니면 fc -l 을 통해 알 수 있다.

3) 명령 재실행

r 이라는 명령어를 쓸 수 있다.
예시)
        • r c : c로 시작하는 가장 최근 명령 출력
        • r [숫자] : 해당 숫자번호의 명령어 출력
        • r : 직전 명령 재실행

(4) 터미널 기능 설정 - stty

1) 기 능

터미널 옵션 기능을 설정. 옵션과 모드를 지정하지 않으면 현재 설정값을 출력한다.

2) 형 식

stty [옵션] [모드]

3) 옵 션

-a : 터미널 전체 옵션 값을 출력

4) 모 드

      • erase : 삭제키 지정
      • rows : 터미널의 행수 지정
      • columns : 터미널의 열 수 지정


3. C 쉘의 주요 기능

(1) 특 징

1) 절대 경로

/bin/csh

2) 기본 프롬프트

일반사용자 : %
root사용자 : #

(2) 환경설정

1) 환경 설정 파일

      • 시스템 초기화 파일
            기본쉘이 C쉘인 모든 사용자가 로그인 할 때 실행된다.
            /etc/.login 파일이고, /etc/profile과 내용은 동일하다
      • 사용자 초기화 파일
            사용자 마다 작성하여 자신만의 환경설정한다.
            ~/.login, ~/.cshrc에 저장되는데, 로그인할때 .cshrc -> .login 파일 순으로 실행된다.
            ~/.login : 로그인할때 한번만 실행되며, 환경변수, 터미널 설정이 저장된다.
            ~/.cshrc : 로그인할때, 서브쉘 생성시 생성되며, 쉘 변수, 앨리어스, 히스토리 설정이 저장된다.

2) 환경변수 설정 - setenv

인자로 지정한 환경변수의 값을 설정한다.
만약 지정하지 않으면 현재 설정된 환경 변수의 목록을 출력한다.

3) 쉘 변수 설정 - set

인자로 지정한 쉘 변수의 값을 설정
인자를 지정하지 않으면 현재 설정된 쉘 변수의 목록을 출력한다.

4) 앨리어스 설정

콘쉘과 설정과 삭제가 동일하다

(3) 히스토리 기능 - history

1) 기 능

      • 지역변수의 형태로 .cshrc파일에 설정한다.
      • set histroy=[숫자] : 숫자만큼 명령을 저장
      • set savehist=[숫자] : 로그아웃 후에도 숫자만큼의 히스토리가 ~/.history파일에 저장

2) 형 식

history [옵션]

3) 옵 션

-h : 히스토리 번호를 생략하고 출력
-r : 역순으로 출력
숫자 : 최근 실행한 명령의 갯수를 지정

4) 명령 재실행하기

      • ! 문자, ! 번호 : 이전에 실행했떤 명령을 반복 실행하는 기능
      • 지정한 문자, 히스토리 번호를 갖는 최근 명령 실행

(4) 초기화 파일 실행하기

기능)

일반적으로 어떤 쉘이든 환경설정파일을 처음작성하거나, 수정했을 때, 이를 적용하기위해 쓰는 명령어다.
. 혹은 source 명령어를 사용한다.

예시)

. .profile : 수정된 .profile 실행
source .profile : 수정된 .profile 실행