[Linux] 리눅스 쉘(shell) 이해
Updated:
1. Linux shell 이란?
리눅스의 명령어와 프로그램을 실행할 때 사용하는 인터페이스.
쉘은 커널(kernel)과 사용자간의 다리 역할을 하는 것으로 사용자로 부터 명령을 받아 그것을 해석하고 프로그램을 실행
- 커널이란? 컴퓨터는 CPU, Memory, Disck 등의 다양한 장치들로 구성되어있다. 이 장치들을 추상화 하여 사용자들이 혹은 응용프로그램이 사용하기 쉽도록 해주는게 바로 운영체제 이며, 그 운영체제의 핵심이 바로 커널이다.
2. Shell 종류
쉘 이름 | 실행 명령 | 설명 |
---|---|---|
Bourne Shell | sh |
벨 연구소의 스티브본(Stephen Bourne)이 개발, 많은 쉘 스크립트의 기반이 되는 쉘 |
C Shell | csh |
C언어 구문과 유사, Bourne Shell 을 확장하여 히스토리, 작업제어, 엘리어스 등 기능 추가 |
TC Shell | tcsh |
csh 기반에 csh 명령행 완성과 명령행 편집 기능을 추가 |
Korn Shell | ksh |
Bourne Shell과 호환되며 C shell의 많은 기능을 포함 |
Bourne Again Shell | bash |
리눅스에서 가장 많이 사용되는 쉘로 Bourne쉘을 토대로 C쉘과 Korn쉘의 기능을 통합시켜 개발 |
Zsh | zsh |
bash 와 대두분 호환 되면서 훨씬 좋은 기능과 사용성 제공(화려하고, 더 많은 정보를 보여줌) |
3. Shell 확인
Shell 확인 방법은 $SHELL 을 출력해 봅니다.
$ echo $SHELL
/bin/zsh
4. Shell 변경
현재 저는 zsh 을 사용 중인데 bash 로 변경 해보겠습니다.
일단 chsh (change shell) 명령어를 실행하면
password 입력후 아래와 같이 보일겁니다.
그럼 vi편집기를 이용해서 Shell: /bin/zsh 부분을 Shell: /bin/bash 로 변경하고 저장해 줍니다.
그러고나서 shell 을 종료하고 다시 로그인 하고 echo $SHELL
명령어를 실행 해 보면 /bin/bash
로 출력될 것입니다.
$ chsh
# Changing user information for inyonghong.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/zsh
Full Name: Inyong Hong
Office Location:
Office Phone:
Home Phone:
5. Shell 목록 확인
변경 하려면 어떤 Shell 들이 있는지 확인 해야 하는데 그 명령어는 /etc/shells 를 보면 됩니다. 아래처럼 목록이 나옵니다.
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
etc 디렉토리는 시스템 설정 파일이 존재하는 디렉토리로 리눅스 시스템에서 가장 중요한 디렉토리 이기도 합니다.
Leave a comment