나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-02-03 14:53:07

터미널 에뮬레이터


1. 개요2. 역사3. 종류
3.1. 가상 터미널3.2. 그래픽 터미널 에뮬레이터
3.2.1. 래스터 터미널 에뮬레이터3.2.2. 웹 터미널 에뮬레이터
4. 목록5. 기타6. 둘러보기

1. 개요

terminal emulator

비디오 터미널을 소프트웨어 및 그래픽 환경에서 재현하는 응용 프로그램.

터미널과는 구분되는 용어이지만 현실적으로 진짜 하드웨어 터미널을 보기 어려워진 현재 터미널(terminal), 콘솔(console) 등으로도 불린다.

2. 역사

개발이 시작되던 시절의 초창기 컴퓨터는 가격이 너무 비쌌고, 몸체가 방 안에 다 들어갈 수 없을 정도로 컸다. 따라서 한 컴퓨터를 여러 명이 동시에 쓸 수밖에 없었는데, 이때 컴퓨터의 본체를 메인프레임이라고 하고, 사용자들은 이 메인프레임으로 연결되어 있는 각각의 단말(terminal) 앞에 앉아서 명령을 내리고 결과를 받았다. 이것이 바로 터미널의 시초이다.

이 단말은 주로 입력을 넣는 키보드와 결과를 출력하는 몇 줄 가량 폭의 단색[1] CRT 비디오 모니터로 구성된 하드웨어 장치였고, 이를 화상 터미널(video terminal, VT[2]) 또는 현대에 와선 터미널 에뮬레이터와 구분짓는 의미로 하드웨어 터미널(hardware terminal)이라고도 부른다.

이 때 커서를 앞으로 옮기는 CR(carrage return)과 줄을 바꾸는 LF(line feed)문자뿐 아니라 줄 지우기, 화면 지우기, 커서 이동하기 등 특수한 이스케이프 명령어들을 지원하는 터미널 제품들을 '똑똑한(smart)' 터미널이라고 부르고, 이를 지원하지 못하는 기기를 '멍청한(dumb)' 터미널이라고 불렀다.# 이런 특수 명령어들은 보통 제조사별로 다른 독자 규격(VT52, VT100 등)이었지만 몇몇은 사실상 표준이 되거나 실제 표준으로 등록되기도 했는데, 대표적인 게 현재까지도 쓰이는 ANSI 이스케이프 코드 표준이다. 여담으로 현대 UNIX 환경에서도 이러한 흔적을 확인할 수 있는데, $TERM 환경변수를 흔한 xterm-256color가 아닌 dumb으로 설정함으로써 줄 지우기를 하지 않도록 설정할 수 있다.

3. 종류

3.1. 가상 터미널

virtual terminal, VT / virtual console

커널에 내장 구현된 터미널 에뮬레이터. 주로 원격 환경이 아님에도 그래픽 환경이 분리될 수 있는 유닉스리눅스, macOS 계열에 존재한다.

대부분의 경우 /dev/tty1부터 /dev/tty7에 대응되는 총 일곱 개의 가상 터미널이 존재하고, Alt + F1~F7, 그래픽 환경이라면 Ctrl + Alt + F1~F7 단축키로 오갈 수 있으며, 이는 chvt 명령어로도 가능하다. 주로 X11Wayland 등의 그래픽 세션은 이중 맨 앞(1) 또는 맨 뒤(7)에서 실행되고, 나머지 여섯은 로그인 셸을 제공한다. 물론 원한다면 각각의 가상 터미널에서 얼마든지 더 그래픽 세션을 돌릴 수 있다.#

3.2. 그래픽 터미널 에뮬레이터

graphic terminal emulator

흔히 터미널 에뮬레이터 하면 의미하는 항목으로, 운영체제의 그래픽 환경에서 돌아가는 그래픽 응용 프로그램을 가리킨다.

그래픽 환경의 모든 기능을 사용할 수 있기에 사실상 기능의 폭이 무궁무진한데, 복사 붙여넣기, 버퍼 스크롤, 트루컬러 지원, 유니코드 폰트 렌더링, 합자 지원, 검색 기능, 하이퍼링크, 단축키, 멀티 탭, 멀티 패인까지 사실상 개발자가 터미널에서 일상적으로 사용하는 대부분의 기능은 놀랍게도 그래픽 환경일 때만 가능한 것들이다.

3.2.1. 래스터 터미널 에뮬레이터

3.2.2. 웹 터미널 에뮬레이터

웹소켓등을 통해 구현되는 터미널 에뮬레이터. 주로 VPC 클라우드 컴퓨팅 환경에서 SSH를 통해 원격으로 인스턴스에 접속하기 위해 사용된다.

2010년대 들어 Electron의 등장 이후로는 GUI 어플리케이션으로써의 사용처도 생기기 시작했다. Visual Studio Code에 내장된 xterm.jsHyper 등이 대표적.

4. 목록

5. 기타

과 흔히 혼동하지만, 기술적으로 전혀 다르다. 쉽게 말해 셸은 특정 형태의 명령을 받아 이를 수행하는 인터프리터 언어이고, 터미널 에뮬레이터는 이러한 명령을 키보드로 입력받고 결과를 출력해 화면에 렌더링해 주는 응용 프로그램이다. 즉, 둘은 구현된 계층(layer)이 다르다. 다른 터미널 에뮬레이터로 같은 셸을 구동할 수 있으며, 반대로 한 터미널 에뮬레이터로 여러 셸을 구동하거나 중첩할 수 있다. 그래픽 터미널 에뮬레이터의 경우, 쉽게 말해 터미널 '창', 터미널 '앱'을 의미한다.

6. 둘러보기


[1] 흑백은 가시성이 떨어지기에 주로 밝은 초록색, 형광색을 사용했지만 DEC VT320처럼 은은한 주황색 계열도 간혹 있었다.[2] 후술할 가상 터미널(virtual terminal)과 약자가 같다. 혼동하기 쉽지만 커널의 가상 터미널은 GUI가 아닐 뿐 엄연히 터미널 에뮬레이터의 일종이다.