728x90
쉘(Shell)
- 사용자와 커널을 연결시켜주는 기능을 수행하는 특별한 프로그램
- 사용자가 입력한 명령을 처리하고 실행 결과를 알려주는 기능
- 세 가지 기능 : 명령어 해석기, 프로그래밍, 사용자 환경 설정
명령어 해석기 기능
- 사용자와 커널 사이에서 명령을 해석하여 전달하는 해석기(Interpreter) 또는 번역기(Translator) 역할 수행
- 사용자가 입력한 명령이나 파일에서 읽어들인 명령을 해석하고 적절한 프로그램을 실행시킴
- 로그인 쉘 : 사용자가 로그인하면 쉘은 자동으로 실행되어 사용자가 명령 입력하기를 기다림. /etc/passwd 파일에 사용자별로 지정되어 있음
- 사용자 명령을 기다리고 있음의 표시가 프롬프트
프로그래밍 기능
- 쉘 자체에서 프로그램 작성 가능
- 여러 명령을 사용해 반복적으로 수행하는 작업을 프로그램 하나로 만들 수 있음
- 쉘 스크립트
사용자 환경 설정 기능
- 초기화 파일 기능을 이용해 사용자 환경을 설정
- 명령을 찾아오는 경로 설정, 새로운 파일의 기본 권한 설정, 다양한 환경 변수 설정 등을 초기화 파일에 설정할 수 있음
- 사용자가 로그인할 때 이 초기화 파일이 실행되어 사용자의 초기 환경 설정
쉘(Shell)의 동작 순서
서브 쉘(Shell) 생성
- 로그인 쉘 : 사용자가 로그인하면 자동으로 생성되는 기본 쉘
- 서브 쉘 : 로그인 쉘의 프롬프트에서 다른 쉘을 실행해 새로 생성된 쉘
- 서브 쉘은 또 다른 서브 쉘 생성 가능
- 서브 쉘 종료 명령은 logout, Ctrl+D, exit 등 (exit을 추천)
- 서브 쉘이 종료되면 서브 쉘을 실행했던 이전 쉘 환경으로 돌아감
- 로그인 쉘에서 로그아웃하면 접속 해제됨
쉘(Shell)의 종류
- 본 쉘, 콘 쉘, C 쉘, 배시 쉘
- 명령을 입력하고 실행하는 대화식 동작 방식이 공통점
- 스크립트를 작성하는 문법이 다름
- 현재 사용 중인 쉘의 종류를 알아보는 가장 쉬운 방법은 프롬프트 모양을 보는 것
- 본 쉘, 콘 쉘, 배시 쉘은 $, C 쉘은 %
본(Bourne Shell, sh) 쉘
- 최초의 쉘
- 개발자 스티븐 본(Stephen Bourne)의 이름을 따서 붙여짐
- 초기에 단순하고 처리 속도가 빨라 많이 사용됨
- 현재도 대부분의 유닉스 시스템에 기본 설치
- 시스템 관리 작업을 수행하는 많은 쉘 스크립트들이 본 쉘을 기반으로 함
- 명령이름 : sh
- 히스토리 기능, 앨리어스 기능, 작업 제어 등 사용자 편의를 위한 기능을 제공하지 못해 다른 쉘들이 등장
콘(Korn Shell, ksh) 쉘
- 1980년대 중반 AT&T 벨연구소의 데이비드 콘(David Korn)이 콘 쉘(Korn Shell)을 개발
- 본 쉘과의 호환성 유지
- 히스토리 기능, 앨리어스 기능 등 C 쉘의 특징들도 제공
- 처리 속도가 빠름
- 명령이름 : ksh
C(C Shell, csh) 쉘
- 캘리포니아 버클리 대학교에서 빌 조이(Bill Joy)가 개발
- 본 쉘의 기능을 확장한 것
- 본 쉘에 없는 앨리어스, 히스토리 등 사용자 편의 기능 포함
- C 언어를 기반으로 만들어졌으며 강력한 프로그램 작성 기능
- 쉘 스크립트 작성을 위한 구문 형식이 C 언어와 같아 이름이 C 쉘이 되었음
- 명령이름 : csh
- 다양한 사용자 편의 기능을 구현하느라 크기가 커지고 처리 속도도 느려졌다는 단점이 있으나 편리한 기능 때문에 사용자들이 즐겨 사용함
배시 쉘 (Bourne Again Shell)
- 본 쉘을 기반으로 개발된 쉘
- 1988년 브라이언 폭스(Brian Fox)에 의해 개발됨
- 본 쉘과 호환성을 유지하면서 C 쉘, 콘 쉘의 편리한 기능도 포함
- GPL을 따르는 공개 소프트웨어
- 리눅스의 기본 쉘, 솔라리스 11의 기본 쉘
- 명령이름 : bash
기타 쉘
- C 쉘, 콘 쉘을 바탕으로 한 다양한 쉘들이 추가로 개발되었음
- TC(The Enhanced C Shell, tcsh) 쉘
- C 쉘의 기능을 확장한 것
- 명령행 편집 기능
- 명령어 완성 기능
- 히스토리 목록에서의 시간 표시 기능
- 명령이름 : tcsh
- 데스크 탑 콘 쉘
- 콘 쉘의 변형
- X 윈도의 기능을 지원할 수 있도록 콘 쉘 기능을 확장한 것
- 명령이름 : dtksh
- Z 쉘
- TC 쉘과 콘 쉘의 기능을 함께 가지고 있음
- 명령이름 : zsh
쉘(Shell)의 확인
- echo 명령으로 쉘 종류 확인
$ echo $SHELL
/bin/bash
$
- /etc/passwd 파일에서 확인
- grep 명령을 사용하여 user1 문자열이 있는 행을 찾아 내용 출력
- /bin/bash가 사용자의 기본 쉘
$ grep user1 /etc/passwd
user1:x:1001:1001:,,,:/home/user1:/bin/bash
$
- /etc/shells 파일에서 확인
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
$
- 사용 중인 배시 쉘에 대한 상세 정보 확인
$ bash --version
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://...>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$
쉘의 변경
- chsh 명령을 사용하여 로그인 쉘을 변경
$ echo $SHELL
/bin/bash
$ chsh
Password:
Changing the login shell for ksshin
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
$
728x90
'프로그래밍 > Unix' 카테고리의 다른 글
[유닉스/unix] 쉘(Shell) 환경 설정 (0) | 2020.04.30 |
---|---|
[유닉스/unix] 쉘(Shell) 기본 사용법 (0) | 2020.04.30 |
[유닉스] 파일 덤프 [ dd (data duplicate) ] (0) | 2020.04.21 |
[유닉스] 파일 연결하기 ( paste ) (0) | 2020.04.21 |
[유닉스] 필드 잘라내기 ( cut ) (0) | 2020.04.21 |