[Linux] 셸 (Shell)

jaylight·2021년 9월 16일
0
post-thumbnail

셸은 Linux 시스템에 접근할 수 있는 명령 행 인터페이스를 제공합니다. 정확히 셸의 역할은 사용자가 입력한 명령어를 해석하여 커널에 전달합니다.

Linux 명령어(프로그램)들(cd, ls, mv 등)을 효율적으로 실행하기 위해, 모든 명령어들을 실행시킬 수 있는 하나의 마스터 프로그램에 각 명령어들을 연결하였고 이것이 셸입니다. 셸로 유저 명령어들을 한번 감쌈으로써 파이프 문자나 와일드카드 문자(*, ?) 등을 명령어에 사용할 수 있게 되었습니다.

Unix의 셸 프로그램은 sh 였으며, sh 의 기능을 확장하고 다른 프로그램으로 대체해 나가면서 현재 Linux 시스템에서는 기본 셸로 대부분 bash 를 사용하고 있습니다.

More History about CLI


Linux 의 근간이 되는 Unix는 메인 프레임 컴퓨터에 유저들이 터미널을 통해 원격 연결할 수 있는 멀티 유저 시스템으로 설계되었습니다. 유저들이 사용하는 터미널은 출력을 보여주는 화면과 입력을 할 수 있는 키보드로 구성되며, 로컬에서 프로그램을 실행시키는 컴퓨팅 능력은 없었습니다.

메인프레임은 터미널에 오직 텍스트로만 출력을 내보내고 텍스트로만 입력을 받을 수 있었습니다. 텍스트만 이용함으로써 메인 프레임의 리소스를 효율적으로 활용할 수 있었고, 1970년대의 매우 느린 네트워크 환경에서도 수 백개의 터미널로 부터 오는 입력을 빠르고 효율적으로 처리할 수 있었습니다. 명령어들은 유저들의 타자 횟수를 줄일 수 있도록 간결해졌으며, 이런 효율성과 편리함 때문에 현재까지도 텍스트 인터페이스를 사용하고 있습니다.

bash & zsh

셸은 종류에 따라 에일리어스 설정, 초기화 파일, 스크립트 작성, 명령 행 완성 기능, 명령 행 편집 기능 등에서 약간씩의 차이가 존재합니다.

bash

bash 셸은 Bourne Again Shell의 약자로 많은 셸들의 셸 스크립트 문법의 기반이 된 Bourne 셸의 개선 버전입니다. Bourne 셸에 C셸과 Korn 셸의 여러 유용한 기능을 덧붙여 개선시켰으며, 현재 많은 리눅스 배포판들이 기본 셸로 bash 셸을 채택하고 있습니다.

zsh

zshbash에 없는 몇 가지 추가적인 편의 기능이 있는데, 예를 들어 경로 자동 완성 기능이 있습니다.

bash 의 경우 아래와 같이 디렉터리 이동 시 모든 경로의 이름을 정확히 입력해 주어야 하지만,

cd /home/ubuntu

zsh 의 경우 경로를 식별할 수 있는 앞 글자를 따서 경로 입력 후 tab 키를 누르면 경로 전체를 자동완성 해주는 기능을 가지고 있습니다.

cd /h/u
# tab 입력
cd /home/ubuntu

또한 zsh 에서 현재 디렉터리와 같은 레벨의 다른 디렉터리로 이동하고자 할 때는 아래와 같이 cd (현재 디렉터리) (이동 디렉터리) 로 입력하여 이동할 수 있다.

cd ubuntu jh
# /home/jh

zsh설치

sudo apt-get install zsh

위 명령어를 명령 프롬프트에 입력하면 zsh 이 설치 되며, 이후 zsh 명령어를 입력하면 아래와 같은 창이 표시됩니다. 아래에서 한번 더 Enter 를 입력하면 터미널에서 명령어를 처리하는 셸이 zsh 로 변경됩니다. (기본 셸이 변경된 것은 아니므로, 터미널을 종료 후 다시 켤 경우 다시 bash 가 실행됩니다.)

zsh 을 기본 쉘로 사용하기 위한 명령어

chsh -s /usr/bin/

내용 출처
The Linux command line for beginners
Knowre의 DevOpeCurriculum 과정

0개의 댓글