[Linux] 리눅스 쉘(shell) 이해

Updated:


1. Linux shell 이란?

리눅스의 명령어와 프로그램을 실행할 때 사용하는 인터페이스.
쉘은 커널(kernel)과 사용자간의 다리 역할을 하는 것으로 사용자로 부터 명령을 받아 그것을 해석하고 프로그램을 실행

  • 커널이란? 컴퓨터는 CPU, Memory, Disck 등의 다양한 장치들로 구성되어있다. 이 장치들을 추상화 하여 사용자들이 혹은 응용프로그램이 사용하기 쉽도록 해주는게 바로 운영체제 이며, 그 운영체제의 핵심이 바로 커널이다.

kernel


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 디렉토리는 시스템 설정 파일이 존재하는 디렉토리로 리눅스 시스템에서 가장 중요한 디렉토리 이기도 합니다.


참조 사이트: 버물리의 IT공부

Leave a comment