1-1. 셸과 커널
리눅스에서 명령어를 입력하면 다음과 같은 결과가 나옵니다.
예 1) date를 입력
date
예 2) echo를 입력
echo Hello world
이렇게 명령어를 입력했을 때 리눅스의 내부에서는 아래와 같은 절차를 수행하게 됩니다.
여기서 3번의 명령어를 실행하는 역할은 '커널'이 담당합니다.
커널도 하나의 소프트웨어인데요.
운영체제의 중심에서 하드웨어를 관리하고, 이를 바탕으로 하드웨어의 자원을 프로세스에 배분하는 역할 등을 수행합니다.
그런데 리눅스에서 커널은 사용자가 임의로 조작할 수 없습니다.
그럼 1,2,4의 역할을 대신해줄 소프트웨어가 필요해지겠죠?
이게 바로 셸의 역할입니다. 셸은 커널의 인터페이스인 것이죠. 그래서 셸(Shell)이라는 이름도 커널을 감싸고 있어서 붙여졌다고 하네요.
셸이 커널과 일체형이 되지 않고 일부러 분리를 해놓은 이유는 무엇일까요?
그건 바로 커널은 그대로 두고 셸만 바꿀 수 있기 때문입니다.
커널에 미치는 영향도를 줄이기 위함이죠.
1-2. 셸의 종류
셸의 종류는 무척이나 다양한데요.
그중 몇 개를 꼽아보자면 아래와 같습니다.
각 셸의 특징에 대해 궁금하신 분은 아래 링크를 확인해주시면 되겠습니다.
https://phoenixnap.com/kb/linux-shells
8 Types of Linux Shells
Not sure which Linux shell to use? Read this guide to find out about the differences between 8 different Linux shells.
phoenixnap.com
1-3. 셸과 터미널
터미널은 컴퓨터의 입출력만 담당하는 전용 하드웨어입니다.
하지만 우리가 평소 리눅스를 사용할 때 위의 사진 같은 하드웨어를 쓴 적은 없었습니다.
우리가 쓰는 건 소프트웨어로 구현을 해놓은 터미널 에뮬레이터죠.
위 사진처럼 말이죠.
터미널 에뮬레이터와 셸은 완전히 다른 소프트웨어입니다.
터미널이 본래 입출력만 담당하는 하드웨어라고 했었죠?
터미널 에뮬레이터도 입출력 화면만 제공하는 소프트웨어입니다.
셸의 입출력을 가시화한 소프트웨어가 터미널 에뮬레이터라고 이해하시면 되겠습니다.
1-4. 셸 변환
이번에는 터미널 에뮬레이터에서 셸을 바꾸는 것을 해보겠습니다.
먼저 sh로 변경해보죠.
sh
sh 셸이 가동되면서 프롬프트의 표시가 $로 바뀌었습니다.
만약 이상태에서 아래와 같이 명령어를 입력하면 어떻게 될까요?
bash
다시 이렇게 bash로 보입니다.
여기서 사실 중요한 점은요.
로그아웃을 시도하면 로그아웃이 안된다는 점입니다.
logout
이렇게 되는 이유는 사실은 3개의 셸이 중첩되어 있기 때문입니다.
하나의 셸이 bash -> sh -> bash로 전환한 것이 아니고요.
구체적으로 살펴보면 bash(로그인한 셸) -> sh(비로그인) -> bash(비로그인) 이렇게 되어있는 셈이죠.
그래서 로그인을 하지 않은 셸은 exit명령어로 빠져나와야 합니다.
exit
Linux - 기본적인 파일 명령어 (3) (0) | 2022.12.05 |
---|---|
Linux - 기본적인 파일 명령어 (2) (0) | 2022.12.04 |
Linux - 기본적인 파일 명령어 (1) (0) | 2022.12.03 |
Linux - 기본적인 명령어 (0) | 2022.11.25 |
Linux - 디렉터리 (0) | 2022.11.25 |
댓글 영역