터미널
Teletypewriter (tty) and Console Emulation.
— 과거 대형 컴퓨터 본체에 전선으로 치렁치렁 매달려 사용자의 텍스트 입출력을 받아주던 기계식 하드웨어에서 출발한 유서 깊은 유산
해커 영화에서 검은 창에 알 수 없는 영문 기호와 코드 로그들이 미친 듯이 쏟아져 나오는 바로 그 간지 나는 연출용 화면의 본체. 실제로는 그저 키보드 타자 신호를 컴퓨터 안의 셸에게 고스란히 던져주는 심부름꾼 마네킹에 불과하다(...)
1. 개요
컴퓨터 시스템과 텍스트 기반으로 대화하기 위해 사용하는 입출력 창구이자 물리적·가상적 인터페이스 기기. 흔히 셸과 혼용되어 쓰이지만, 터미널(Terminal)은 사용자의 입력을 수집하고 결과를 화면에 렌더링해 보여주는 '인터페이스 껍데기(모니터와 키보드)'를 의미하며, 내부 명령어를 실질적으로 실행하는 '뇌(프로그램)'는 터미널 뒤에서 돌아가는 셸이다.
2. 물리적 타자기에서 소프트웨어 에뮬레이터까지
1970년대 고대 UNIX 시스템이 돌아가던 시절에는 모니터와 본체가 한데 묶인 개인용 PC라는 개념이 없었다. 메인프레임 컴퓨터 본체는 차갑고 시끄러운 전산실 안에 홀로 웅크려 있었고, 개발자들은 본체와 시리얼 케이블로 연결되어 타자기처럼 철컥철컥 텍스트를 입력하는 물리적인 Teletype(tty) 하드웨어 장치를 방에 두고 입력했다. 이것이 터미널의 역사적 시초이다. 현대 PC 시대에는 하드웨어 본체에 모니터가 직결되어 있으므로, 바탕화면 위에 가상 창을 띄워 고대 Teletype 장치를 소프트웨어적으로 정밀하게 모사하는 터미널 에뮬레이터(Terminal Emulator)(예: macOS 기본 터미널, iTerm2, Windows 터미널, Alacritty)를 가동하여 텍스트 명령줄 환경을 조작한다.
3. tty, pts, 그리고 개발자들의 에뮬레이터
리눅스 시스템을 켜고 터미널 속에서 tty 명령어를 쳐보면 /dev/tty1이나 /dev/pts/0 같은 가상 장치 경로가 리턴된다. tty는 컴퓨터 메인 하드웨어 콘솔에 다이렉트로 결합된 물리 콘솔 터미널을 뜻하며, 웹 브라우저나 데스크톱 창 속에서 더블클릭해 가상으로 띄운 터미널 에뮬레이터 창은 가상 물리 터미널이라는 뜻의 pts(Pseudo Terminal Slave) 장치로 매핑되어 굴러간다. 개발자들은 가독성을 높이기 위해 폰트 렌더링 속도가 미치도록 빠르고 GPU 가속을 지원하는 Alacritty나 Kitty, 혹은 편리한 화면 분할 기능이 가득한 iTerm2 같은 초호화 전용 에뮬레이터들을 취향껏 설치해 가동하며 생산성을 뽐내곤 한다.1
4. 관련 밈 및 드립
4.1. 초록 글씨 개발자 간지 밈
일반인들이나 비개발자 가족들은 방안에서 검은색 터미널 화면에 텍스트 색상을 초록색이나 네온색으로 튜닝해두고 마우스 없이 키보드만 바쁘게 타닥거리는 개발자의 뒤태를 보면 '어머, 너 지금 어딘가 해킹이라도 하고 있는 거야?'라며 우주적인 오해를 시전한다. 정작 개발자는 단지 자바스크립트 패키지를 깔기 위해 무지성으로 npm install이나 git clone을 쳐놓고, 기계가 알아서 종속성 로그를 주루룩 뱉어내며 설치하는 기나긴 킬링 타임 대기 화면을 멍 때리며 영혼 없이 바라보는 중인데도 말이다.(...)
5. 여담
- 타자기의 물리적 제어가 여전히 작동한다: 터미널에서 줄 바꿈을 할 때 쓰이는 개행 문자 중
(Carriage Return)과(Line Feed)은 고대 전신 타자기 헤드를 정위치로 리셋하고 종이를 한 칸 밀어 올리던 물리적 롤러 장치 제어 통신 규격에서 그대로 유래했다. 50년 전 기계식 타자기 제어 장벽이 현대 초고속 서버 터미널 시스템 밑바닥에 여전히 생생히 상속되어 작동하고 있는 것이다. - Ctrl + S 화면 얼어붙기 참사: 주니어 시절 터미널에서 코딩하거나 서버 로그를 보다가 파일 저장 습관 때문에 무심코 단축키
Ctrl + S를 누르면 터미널 입력이 꽉 잠기며 화면이 꽁꽁 얼어붙어 컴퓨터가 뻗은 줄 알고 사색이 되는 참사가 터진다. 이는 고대 전송 속도가 느리던 시절 터미널 기기가 본체에게 '잠시 전송을 멈춰라(XOFF)'고 신호를 보내던 유산이다. 이 장벽은 침착하게Ctrl + Q(XON)를 갈겨 입력 재개 신호를 주면 순식간에 해동 수리된다. - Windows의 CLI 랜드마크 변천사: 윈도우는 역사적으로 투박한 도트 도스 폰트의
cmd.exe(명령 프롬프트) 창 크기 조절조차 안 되던 형편없는 GUI 가상 터미널 환경을 30년 넘게 방치해 욕을 쳐먹었다. 이에 칼을 갈던 마이크로소프트는 GPU 가속 텍스트 렌더링, 탭 분할, 투명 아크릴 테마를 지원하는 세련된 오픈소스 종합 소프트웨어인 Windows Terminal을 출시하고 윈도우 스토어에 기본 박아 배포하며 컴덕 개발자들의 멘탈을 눈부시게 정화해 주었다.
6. 관련 문서
각주
-
실제로 모던 터미널 에뮬레이터들은 마우스를 만지지 않고 키보드 단축키만으로 화면을 가로/세로 수십 개로 분할하고(tmux 등의 터미널 멀티플렉서 결합), 탭을 빠르게 스위칭하며 여러 대의 원격 리눅스 서버에 동시에 명령어를 일괄 송출하는 사기적인 오케스트레이션 능력을 펼치게 해준다. ↩