CLI?

CLI (Command Line Interface)는 GUI(Graphical User Interface, 그래픽 사용자 인터페이스)와 달리, 텍스트 기반의 명령어 입력을 통해 컴퓨터를 제어하는 인터페이스입니다. CLI 환경에서는 사용자가 명령어를 입력하여 시스템과 상호작용하며, 이 인터페이스를 제공하는 프로그램을 흔히 Shell(셸)이라 부릅니다.

주요 CLI Shell 종류 설명
Bash (Bourne Again Shell) 대부분의 Unix/Linux OS 시스템에서 기본적으로 사용하는 셸
CMD (Command Prompt) Windows OS의 전통적인 명령어 셸
PowerShell Windows OS의 최신 셸로, CMD의 기능을 포함하며 객체 지향 기반의 스크립팅 및 자동화 기능 제공

CLI vs. GUI

Notion Image

일반 사용자 대상의 Linux 배포판은 대부분 GUI 환경을 기본 포함하며, GUI 구성을 위한 디스플레이 서버(Display Server)로는 X Window System (X 서버) 또는 Wayland를 사용합니다. 반면, 서버용 혹은 최소 설치(Minimal Installation) 배포판은 GUI를 포함하지 않으며, CLI 환경만 제공됩니다. 이 경우 사용자가 원하면 xorg, xinit, lightdm, xfce4 등과 같은 구성 요소 패키지 설치를 통해 GUI를 수동으로 설치할 수 있습니다:

GUI 구성요소

plain text
[ 사용자 ]
   ↓
[ Display Manager (예: GDM, LightDM) ]
   ↓
[ Display Server (X Server 또는 Wayland) ]
   ↓
[ Desktop Environment (예: GNOME, KDE, XFCE) ]
   ↓
[ 응용프로그램 (예: Firefox, Terminal, VSCode) ]

Windows 11 OS+WSL2에서의 GUI

WSL2 (Windows Subsystem for Linux v2)는 Windows 11 OS에서 Linux Kernel을 직접 실행할 수 있도록 해 주는 기능입니다. 이를 통해 Windows 안에서 별도의 리눅스 환경을 구축하고, 명령줄 기반의 Linux 도구와 앱을 사용할 수 있습니다.

  • Docker Desktop을 설치하면 자동으로 WSL2가 활성화되며, GUI 없는 리눅스 환경이 생성됩니다 (docker-desktop이라는 이름의 WSL 환경 포함).
  • 일반적으로 WSL2에 설치되는 Linux 배포판은 GUI 환경을 포함하지 않으며 CLI 전용입니다.
  • 그런데, WSL2를 활성화 하면 외부 X 서버 프로그램 없이도 Linux GUI App가 되는 이유는? WSLg 내부에 Microsoft가 직접 만든 X Server + Wayland 모듈이 내장되어 있기 때문입니다. 이를 통해 사용자가 별도의 VcXsrv, Xming 같은 X 서버를 설치하지 않아도 Linux GUI App (예: GIMP)을 설치하고 실행할 수 있는 것입니다. Windows 11에서 WSL2를 활성화하면, 다음과 같은 기술이 자동 포함됩니다:
컴포넌트 설명 위치
WSLg (Windows Subsystem for Linux GUI) 리눅스 GUI 앱을 Windows 상에서 실행하게 해주는 전체 시스템 Windows 11 내부
Wayland 현대적인 디스플레이 프로토콜. GUI 앱의 출력을 내부적으로 처리 WSL 내부
XWayland 기존 X11 기반 GUI 앱과 호환되도록 지원 WSL 내부
RDP (Remote Desktop Protocol) WSL과 Windows 간의 GUI 데이터를 고속 전송 Windows ↔ WSL 사이
RDP Client (FreeRDP 기반) Windows의 GUI 창으로 렌더링 Windows Shell 수준

Linux GUI App 실행 시

plain text
리눅스 앱 (예: GIMP)
   ↓  [X11 또는 Wayland API 호출]
XWayland 또는 Wayland (WSL 내부 디스플레이 서버)
   ↓
WSLg 내부 RDP 서버 (vsock 기반으로 통신)
   ↓
Windows 11의 RDP 클라이언트 (FreeRDP 기반)
   ↓
GUI 윈도우 창으로 사용자에게 표시