Infra/Linux
[리눅스] 셸의 역할과 리눅스 커널, 셸의 종류
sdoaolo
2025. 5. 2. 00:13
728x90
✅ 명령어를 쳤을 때 리눅스 내부에선 어떤일이 벌어질까?
- 키보드로 입력한 date 문자열을 받아들인다.
- date 명령어를 찾는다.
- 발견한 명령어를 실행한다. (리눅스이 본체인 커널이 수행한다)
- 실행한 결과로 얻은 문자열을 화면에 표시한다.
✅ 셸 (Shell)
커널은 운영체제 중심에서 CPU/ 하드웨어를 관리하면서 명령어를 실행하고 프로세스를 관리한다.
리눅스에선 사용자가 커널을 직접 조작할 수 없게 되어있기 때문에
둘 사이의 명령어를 받아들이고, 커널의 실행결과를 출력하는 소프트웨어가 필요하다.
이역할을 하는 소프트웨어가 바로 셸이다.
>> 커널의 인터페이스 역할이다.
- 사용자는 셸에 date명령어를 입력
- 셸은 리눅스 커널에게 실행을 의뢰한다.
- 리눅스 커널은 명령을 실행하고, 셸은 결과를 받아 사용자 화면에 출력한다.
shell(조개껍질) 이라는 이름도 커널을 감싸 보호하기 떄문에 붙혀진것이다.
✅ 커널과 셸은 왜 나뉘어져있을까?
- 커널을 바꾸지 않고 셸만 바꿀수 있다.
- 리눅스가 아닌 OS를 사용할때에도 셸만 인식하면 똑같이 사용가능하다
- 셸을 사용할 때 에러가 발생하거나 높은 부하가 발생해도 본체인 커널에 미치는 영향은 최소화된다.
>> 한 프로그램에 너무 많은 기능을 넣기보다는 적절히 분리하는것이 좋은 설계이다.
✅ 로그인 셸
리눅스에 로그인하면 셸은 사용자를 반기며 입력을 대기한다.
로그인할때 리눅스가 자동으로 셸을 시작하기 때문이다.
>> 로그인셸이라고 부른다.
echo $SHELL 을 입력하면 현재 사용하고 있는 로그인 셸을 확인할 수 있다.
출력결과를 확인했을 때 /bin 디렉터리 밑에 bash가 로그인 셸인데,
별도 지정하지 않으면 배시셸이 로그인셸로 시작된다.
* 셸 스크립트
일련의 명령어 흐름을 기술한 파일을 셸 스크립트라고 핮다.
작은 명령어를 조합해 복잡한 처리를 수행할 수 있게 한다.
✅ 셸의 종류
sh
- 스티븐본이 만들어서 본셸이라고 불린다.
- 리눅스 외에도 FreeBSD Solaris HP-UX AIX등 여러 운영체제에서 사용할 수 있다.
- 현재도 셸 스크립트 작성시 sh를 사용하는것이 일반적이다.
- 오래된 셸이라 기능이 적고 대화형에서 사용하기에 불편
csh
- sh보다 대화형 조작에 편리한 기능을 갖추고 있다 .
- csh이후 tcsh가 나와 많이 사용하지 않음
bash
- 많은 리눅스 기본 로그인 셸로 사용됨
- 대화형 조작에 필요한 기능 있음
- sh바탕으로 기능이 추가된 셸 sh와 호환성이 있다.
tsch
- 셸 스크립트에는 적합하지 않다 .
references
- 도서 : 모두의 리눅스
- https://wikidocs.net/278175