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

일반 사용자 대상의 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 윈도우 창으로 사용자에게 표시