쉘(shell)이란?
리눅스 쉘은 명령어와 프로그램을 실행할때 사용하는 인터페이스입니다.
커널(Kernel)과 사용자간의 다리역할을 하는 것으로, 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행하는 역할을 합니다.
사용자가 사용자 프로그램 (에디터, 서버, x윈도, 터미널 등..) 을 이용해 명령어를 입력하면
사용자가 이용하는 쉘이 명령어를 받아 커널에 전달해줍니다.
- 커널은 하드웨어를 직접적으로 제어하는 역할을 하며 컴퓨터가 이해할 수 있는 기계어를 통해 하드웨어에게 전달해주는 역할입니다.
쉘의 기능
- 명령어 해석기 기능 :사용자와 커널 사이에서 명령을 해석하여 전달한다. (대화식 사용)
- 프로그래밍 기능 :일련의 명령어와 쉘 자체로 프로그램을 만들 수 있다 (Shell Script).
- 사용자 환경설정 기능 :리눅스의 세션 변수들을 정의하여 사용자가 리눅스 환경을 설정할 수 있다.
쉘 스크립트(shell script)
쉘에게 어떤 명령을 할지 스크립트 파일 형식을 '.sh'파일 확장자로 작성하여 알려주는 것입니다.
쉘스크립트는 일반적인 프로그램 언어와 달리 기본 명령어를 기반으로 하여
몇가지 문법을 가지고 사용자가 쉽게 작성할수있습니다.
이렇게 실행파일로 만들어 사용하면 수동으로 입력해야하는 여러 명령을 자동으로 실행 할 수 있습니다.
- 반복되는 작업을 자동화하기 위해 스크립트 파일 형태 작성
- 다른프로그래밍언어의 같은 코드로 쓰인것보다 훨씬 더 빠른 경우가 많다
- 컴파일 단계가 없어 스크립트는 디버깅 하는 동안 빠르게 실행할 수 있다.
- 스크립트의 내용을 모르는 사용자도 실행할 수 있도록 할 수 있다.
- 모니터링, 데이터백업, 복구, 보안, 인증 등 여러 상황에서 많이 활용됨
쉘 종류
cat /etc/shells 명령어를 통해 /etc/shells 파일을 보면 현재 운영체제 환경에서 사용할 수 있는 쉘의 종류를 확인 가능.
다양한 쉘의 종류가 있으며, 가장 널리 쓰이는 bash쉘이 대표적입니다.
쉘 이름 | 위치 | 특징 |
sh (Bourne Shell) | /bin/sh | 최초의 유닉스 쉘로 스크립트를 지원하며 sh로 표기한다. 본쉘은 논리 및 산술 연산을 처리하는 내장 기능이 없어 이전에 사용한 명령을 기억할 수 없다. (history 기능 제공하지 않음) |
ksh (Korn Shell) | /bin/ksh | 본 쉘을 개선한 상위집합으로 history, alias 등의 작업기능이 추가되었다. (csh, sh 보다 빠름) |
csh (C Shell) | /bin/csh | ksh 처럼 본쉘의 개선버전으로 history, alias, ~ (홈디렉토리) 기능 추가, 명령어 편집 기능 제공 X |
tcsh | /bin/tcsh | csh 개선 버전으로 명령어 편집기능 제공, 자동완성, where 명령어 제공 |
bash (Bourne Again Shell) | /bin/bash | 본쉘의 확장버전으로 만든 Unix 쉘로 Linux, Mac의 기본 쉘로 사용된다. mv, cp, rm, touch, ls, mkdir, cd, rmdir 등의 명령어 들이 추가되었다. |
zsh | /bin/zsh | bash, ksh, tcsh의 기능을 결합하여 맞춤법 검사, 로그인 감시, 자동 생성, 플러그인 및 테마가 지원되며, oh my zsh 등의 사용자 정의 테마를 지원한다. |
다른 블로그 포스팅
BASH 쉘 프로그래밍 문법
'STUDY > SERVER OS' 카테고리의 다른 글
[Docker] 도커(Docker)란? (0) | 2023.11.24 |
---|---|
[Windows] Ping이란 (0) | 2023.10.13 |
[Linux] su / su - / sudo 명령어 차이 (0) | 2023.10.13 |
[Server] 프로세스 / 데몬 / 서비스 개념 정리 (1) | 2023.10.05 |
[Ubuntu] jar 서비스(service) 등록·확인·시작·중지·재시작 방법 (0) | 2023.10.05 |