터미널이란 무엇일까? 위키백과의 정의를 보자
단말기 또는 터미널은 컴퓨터나 컴퓨팅 시스템에 데이터를 입력하거나 표시하는 데 쓰이는 전자 하드웨어 기기이다. 컴퓨터 터미널은 인간과 컴퓨터의 인터페이스 의 한 예이다. 터미널의 기능은 데이터를 보여 주고 입력하는 데 제한을 받는다.
터미널을 하드웨어 기기라고 정의하고 있지만, 현재로서는 소프트웨어인 프로그램을 일컫는 말로 더 쓰이는 것 같다. Terminal은 한국어로 '단말기'인데 이름 때문인지 더욱 혼동되는 느낌이 든다.
아무튼 이 백엔드 로드맵에서 말하는 터미널 또한 소프트웨어 프로그램을 말하는 것 같다. 그렇다면 소프트웨어 적으로 터미널은 어떠한 역할을 할까?
터미널을 간략하게 설명한다면
서버의 로컬 또는 원격으로 접속할 수 있는 콘솔을 구현한 소프트웨어
라고 말할 수 있다. 그렇다면 여기서 또 콘솔이 무엇일까
콘솔은 서버의 로컬 장치에서 직접 명령어를 작성할 수 있는 입출력 장치이다. 콘솔이 물리적인 장치라면 터미널은 원격제어 환경까지 포함하는 더 넓은 의미라고 할 수 있다.
그래서 윈도우의 cmd 를 예를 들어서 본다면
파란색 테두리가 터미널 이고 cd document라고 입력한 부분이 콘솔이라고 볼 수 있다.
이렇게 터미널 안에 콘솔을 이용해서 명령어를 입력하면 쉘(shell)이 OS커널에 명령어를 전달해 준다.
여기서 쉘은 아래와 같이 설명할 수 있다.
실제로 명령어를 전달하고 결과를 전달받는 프로그램
그런데 조사를 좀 해보니까 사실상 터미널과 콘솔은 거의 혼용해서 쓰고 쉘과 터미널도 유의미하게 구분해서 쓰는 것 같지가 않다. (이건 나의 뇌피셜..)
GUI(Graphical User Interface)는 일반 사용자가 보편적으로 사용하는 인터페이스이다. 바탕화면에 있는 프로그램 아이콘들, 마우스 우클릭으로 쓸 수 있는 명령어들을 그래픽으로 보여주는 방식이 GUI이다.
반대로 터미널은 CLI(Command Line Interface)인데, 직접 명령어를 한줄씩 작성해서 컴퓨터를 제어하는 방식이다. 소프트웨어 모듈 설치나 git과 같은 프로젝트 관리를 위해 개발자가 사용한다.
터미널(Terminal): 시스템에 접속하여 입출력을 가능하게 하는 단말장치(형태: 하드웨어 or 소프트웨어)
콘솔(Console): 콘솔은 터미널의 일종. 시스켐 제어등을 위한 특수목적의 터미널
쉘(Shell) : CLI 명령을 해석하는 소프트웨어. 커널(kernel)의 반댓말로 껍데기라는 의미. unix/linux의 bash, windows의 cmd
그런데 내가 생각하기에 현재로선 이 세가지 용어를 혼용해서 사용하는 것 같다. 그래도 조금 구분해서 알아두면 좋지 않을까.
감사합니다. 요약있어서 최종 정리가 잘되네요~