사용자가 입력하는 명령어를 읽고 해석하여 운영체제가 이해할 수 있도록 도와주는 명령어 해석기
사용자(프로그램)에게 받은 명령을 전달받아 커널이 이해할 수 있도록 해석하여 전달하고, 커널은 하드웨어와 직접적으로 통신하는 역할을 한다.
즉, 운영체제의 커널과 사용자 간의 인터페이스 역할을 수행한다.
커널(Kernel)
- 하드웨어를 제어하는 운영체제의 핵심
- 하드웨어 리소스 (CPU, 메모리, 스토리지 등) 관리
- 소프트웨어에서 하드웨어 및 리소스에 대한 액세스를 추상화
쉘 이름 | 위치 | 특징 |
---|---|---|
sh (Bourne Shell) | /bin/sh | - 최초의 유닉스 쉘 - 논리 및 산술 연산을 처리하는 내장 기능이 없어 이전 명령을 기억할 수 없다 |
ksh (Korn Shell) | /bin/ksh | - 본 쉘을 개선한 상위집합으로 history, alias 등 작업 추가 |
csh (C Shell) | /bin/csh | - 본쉘의 개선 버전 - 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
, zsh
을 많이 사용한다. zsh
의 경우 bash
가 갖고 있지 않은 추가적인 기능을 갖고 있어 더 편리하다는 평을 받기도 한다.echo $0
를 입력하면 확인할 수 있다chsh -s /bin/[쉘이름] [사용자명]
을 입력하면 현재 사용 중인 쉘을 변경할 수 있다쉘에서 사용할 수 있는 명령어들의 조합을 모아 만든 배치(batch) 파일
즉, 운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 방식의 프로그램이다.
아래 명령어를 실행하는 코드를 작성해보자
- 현재 디렉토리에 bak
디렉토리가 없다면 만들고 있다면 만들지 않는다
- 현재 디렉토리에 있는 모든 파일 중에 .log
로 끝나는 파일을 bak
디렉토리로 복사한다
편집기를 사용해서 아래와 같은 코드를 작성한다
#!bin/bash
→ bash 쉘을 사용하겠다는 의미#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
실행시키기 위해서는 권한을 부여해야 한다 → chmod +x [파일명]
x
는 excutable(실행가능)함을 의미한다./backup
실행시키면 해당 명령을 수행한 것을 확인할 수 있다
생활코딩-리눅스 강좌
https://sasca37.tistory.com/286
https://minkwon4.tistory.com/159