이전 영상에서 실제로 커맨드를 입력하는 검은 창은 터미널이라고 한다고 했는데요. 터미널 외에도 shell이나 bash 같은 용어를 들어보셨을 수도 있습니다. 이번 레슨에서는 각 용어가 정확히 뭘 의미하는지, 그리고 서로가 어떻게 다른지에 대해 설명해 드릴게요.
터미널은 인풋을 받고, 아웃풋을 출력해 주는 프로그램을 뜻합니다. 우리가 보통 생각하는 커맨드를 입력하는 '검은 화면'을 터미널이라고 할 수 있는 거죠.
이전 영상에서 터미널에 date 커맨드를 입력하니까 현재 시간이 출력됐고, cal 커맨드를 입력하니까 이번 달 달력이 출력됐었죠?
shell은 커맨드를 해석해 주는 프로그램입니다.
이전 영상에서는 date나 cal같은 간단한 커맨드를 써봤는데요. 컴퓨터는 사실 date나 cal같은 단어를 이해하지 못합니다. 그래서 이런 커맨드들을 컴퓨터가 이해할 수 있는 형태로 바꿔줘야 하는데, 그게 바로 shell이 하는 역할이죠. shell이 date같은 커맨드를 컴퓨터가 이해할 수 있는 형태로 바꿔서 전달해 주면, 컴퓨터가 실제로 커맨드를 '실행'하고 결과를 되돌려 주는 겁니다.
shell은 여러 종류가 있고, 종류에 따라 커맨드를 해석하는 방식이나 제공하는 인터페이스가 조금은 다를 수 있지만 대부분의 경우 아주 비슷하거나 똑같이 작동하기 때문에 이번 토픽에서는 큰 상관없습니다.
shell 종류 중 하나가 바로 bash(Bourne again shell)인데요. 가장 보편적이고, 많은 유닉스 운영 체제에서 기본 shell로 사용됩니다. 많은 분들이 사용하고 계실 Ubuntu의 기본 shell이기도 하고요. macOS는 10.15 Catalina 이전 버전에는 bash를 기본으로 썼었는데, 10.15 버전 이후부터는 zsh(Z shell)을 기본으로 쓰기 시작했습니다.
아무튼, shell과 터미널은 엄밀히 말하면 서로 다르지만, 커맨드를 입력하는 '검은 화면'을 그냥 shell이라고 부르는 경우도 많으니까 참고해 두시면 좋을 것 같습니다.