Posted on:July 1, 2025 at 02:30 AM

ZSH 쉘을 위한 Starship 테마

ZSH 쉘을 위한 Starship 테마

Starship은 모든 쉘을 위한 최소한의, 매우 빠르고, 무한히 사용자 정의 가능한 프롬프트입니다! Rust로 작성되어 다양한 쉘과 운영체제에서 작동하는 아름답고 기능이 풍부한 터미널 프롬프트를 제공합니다.

목차

왜 Starship인가?

기본 터미널 프롬프트나 oh-my-zsh 테마를 사용하고 있다면, 왜 Starship으로 전환해야 하는지 궁금할 것입니다. 다음은 설득력 있는 이유들입니다:

성능

  • 번개처럼 빠름: Rust로 작성되어 기존 쉘 테마보다 훨씬 빠릅니다
  • 최소한의 시작 시간: 새 터미널 세션을 열 때 눈에 띄는 지연이 없습니다
  • 효율적: 필요할 때만 관련 정보를 표시합니다

크로스 쉘 호환성

  • Bash, Zsh, Fish, PowerShell 등에서 작동합니다
  • 다양한 쉘과 운영체제에서 일관된 경험을 제공합니다
  • 다른 터미널 환경 간 쉬운 마이그레이션이 가능합니다

즉시 사용 가능한 풍부한 기능

  • Git 통합: 브랜치, 상태, 저장소 정보를 표시합니다
  • 언어 감지: 30개 이상의 프로그래밍 언어 버전을 자동으로 감지하고 표시합니다
  • 클라우드 제공업체 정보: AWS, GCP, Azure 컨텍스트를 표시합니다
  • Kubernetes 컨텍스트: 현재 클러스터와 네임스페이스를 표시합니다
  • 사용자 정의 모듈: 자신만의 정보 모듈을 생성할 수 있습니다

설치

전제 조건

Starship을 설치하기 전에 터미널에 Nerd Font가 설치되고 활성화되어 있는지 확인하세요. Nerd Font는 Starship을 아름답게 보이게 하는 특수 기호와 아이콘을 제공합니다.

인기 있는 Nerd Fonts:

  • Fira Code Nerd Font
  • JetBrains Mono Nerd Font
  • Source Code Pro Nerd Font
  • Hack Nerd Font

다운로드: https://www.nerdfonts.com/

Starship 설치

선호하는 설치 방법을 선택하세요:

옵션 1: 설치 스크립트 (권장)

# 크로스 플랫폼 설치 스크립트
curl -sS https://starship.rs/install.sh | sh

옵션 2: 패키지 매니저

# macOS (Homebrew)
brew install starship

# Ubuntu/Debian
curl -sS https://starship.rs/install.sh | sh

# Arch Linux
pacman -S starship

# Windows (Chocolatey)
choco install starship

# Windows (Scoop)
scoop install starship

쉘 설정

쉘의 설정 파일에 초기화 스크립트를 추가하세요:

Zsh용 (.zshrc)

# oh-my-zsh를 사용하는 경우 테마를 비활성화하세요
ZSH_THEME=""

# ~/.zshrc 끝에 Starship 초기화를 추가하세요
eval "$(starship init zsh)"

Bash용 (.bashrc)

# ~/.bashrc에 추가
eval "$(starship init bash)"

Fish용 (config.fish)

# ~/.config/fish/config.fish에 추가
starship init fish | source

설정

Starship은 ~/.config/starship.toml에 위치한 TOML 설정 파일을 사용합니다. 프롬프트를 사용자 정의하려면 이 파일을 생성하세요.

기본 설정

설정 디렉토리와 파일을 생성하세요:

mkdir -p ~/.config
touch ~/.config/starship.toml

기본 설정

다음은 지저분하지 않으면서 유용한 정보를 제공하는 균형 잡힌 설정입니다:

# ~/.config/starship.toml

# 전역 설정
add_newline = true
command_timeout = 1000

# 사용자 정의 형식 - 프롬프트에 표시될 내용 정의
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$git_state\
$python\
$nodejs\
$rust\
$golang\
$java\
$docker_context\
$kubernetes\
$aws\
$cmd_duration\
$line_break\
$character"""

# 지저분함을 줄이기 위해 클라우드 정보 비활성화
[gcloud]
disabled = true

[azure]
disabled = true

# 더 깔끔한 모습을 위해 패키지 버전 정보 비활성화
[package]
disabled = true

# 필수 언어 정보만 유지
[nodejs]
format = "via [⬢ $version](bold green) "
detect_files = ["package.json", ".nvmrc"]

[python]
format = "via [🐍 $version]($style) "
detect_extensions = ["py"]

[rust]
format = "via [⚙️ $version](red bold) "

# Git 설정
[git_branch]
format = "on [$symbol$branch]($style) "
symbol = "🌱 "
style = "bold purple"

[git_status]
format = '([\[$all_status$ahead_behind\]]($style))'
style = "bold red"

[directory]
format = "in [$path]($style)[$read_only]($read_only_style) "
style = "bold cyan"
truncation_length = 3
truncate_to_repo = true

# 명령 실행 시간 - 2초 이상일 때 표시
[cmd_duration]
min_time = 2_000
format = "took [$duration]($style) "
style = "bold yellow"

# 문자 프롬프트
[character]
success_symbol = "[❯](bold green)"
error_symbol = "[❯](bold red)"

나의 설정

# Disable cloud info (Google Cloud, AWS, etc.)
[gcloud]
disabled = true

[aws]
disabled = true

[azure]
disabled = true

# Disable package version info
[package]
disabled = true

# Disable Node.js version
[nodejs]
disabled = true

# Disable Python version
[python]
disabled = true

# Keep only essential info
[git_branch]
format = "[$symbol$branch]($style) "

[directory]
format = "[$path]($style) "
truncation_length = 3

고급 설정 예제

DevOps 엔지니어용

# Kubernetes 컨텍스트 표시
[kubernetes]
format = 'on [⛵ $context \($namespace\)](dimmed green) '
disabled = false

# AWS 프로필 표시
[aws]
format = 'on [$symbol($profile )(\($region\) )]($style)'
symbol = "☁️  "
style = "bold blue"

# Docker 컨텍스트 표시
[docker_context]
format = "via [🐋 $context](blue bold) "

웹 개발자용

# Node.js 버전 항상 표시
[nodejs]
format = "via [⬢ $version](bold green) "
disabled = false

# 패키지 버전 표시
[package]
format = "is [📦 $version](208 bold) "
disabled = false

유용한 기능

Git 통합

Starship은 Git 저장소를 자동으로 감지하고 다음을 표시합니다:

  • 현재 브랜치 이름
  • 저장소 상태 (스테이징된, 수정된, 추적되지 않은 파일)
  • 앞서가거나 뒤처진 커밋 수
  • 저장소 상태 (병합, 리베이스 등)

언어 감지

다음 언어들에 대해 자동으로 감지하고 버전을 표시합니다:

  • JavaScript/Node.js (package.json)
  • Python (.py 파일, 가상 환경)
  • Rust (Cargo.toml)
  • Go (go.mod)
  • Java (.java 파일)
  • 그리고 25개 이상의 언어

클라우드 제공업체 컨텍스트

  • AWS: 현재 프로필과 리전을 표시합니다
  • Google Cloud: 활성 프로젝트를 표시합니다
  • Azure: 활성 구독을 표시합니다
  • Kubernetes: 현재 컨텍스트와 네임스페이스를 표시합니다

성능 팁

  1. 선택적 모듈 로딩: 실제로 사용하는 모듈만 활성화하세요
  2. 타임아웃 설정: 느린 네트워크를 위해 command_timeout을 조정하세요
  3. 사용하지 않는 기능 비활성화: 더 빠른 프롬프트를 위해 패키지 감지를 끄세요
# 느린 모듈 비활성화
[gcloud]
disabled = true

[package]
disabled = true

# 더 빠른 응답을 위해 타임아웃 줄이기
command_timeout = 500

문제 해결

일반적인 문제

기호가 올바르게 표시되지 않음

  • Nerd Font가 설치되고 활성화되어 있는지 확인하세요
  • 터미널의 폰트 설정을 확인하세요

프롬프트가 느림

  • command_timeout 값을 줄이세요
  • 사용하지 않는 모듈을 비활성화하세요
  • 클라우드 모듈의 네트워크 연결을 확인하세요

Git 상태가 표시되지 않음

  • Git 저장소 안에 있는지 확인하세요
  • Git 설정과 권한을 확인하세요

설정 테스트

쉘을 다시 시작하지 않고 설정을 테스트하세요:

# 설정 다시 로드
exec $SHELL

# 또는 쉘 설정 소스
source ~/.zshrc  # zsh용
source ~/.bashrc # bash용

Oh-My-Zsh와의 비교

기능Oh-My-ZshStarship
성능느린 시작번개처럼 빠름
크로스 쉘Zsh만모든 주요 쉘
사용자 정의테마 기반모듈 기반
유지보수활발하지만 복잡간단하고 현대적
의존성무거움최소한

프리셋과 테마

Starship은 시작점으로 사용할 수 있는 몇 가지 내장 프리셋을 제공합니다:

# 프리셋 적용
starship preset nerd-font-symbols -o ~/.config/starship.toml
starship preset bracketed-segments -o ~/.config/starship.toml
starship preset plain-text-symbols -o ~/.config/starship.toml

개발 도구와의 통합

Cursor IDE

Cursor IDE를 사용하고 있다면 (태그에 언급된), Starship은 통합 터미널과 매끄럽게 작동하여 동일한 아름다운 프롬프트 경험을 제공합니다.

Docker 개발

[docker_context]
format = "via [🐋 $context](blue bold) "
only_with_files = false

가상 환경

[python]
format = 'via [${symbol}${pyenv_prefix}(${version} )(\($virtualenv\) )]($style)'

결론

Starship은 다음과 같이 터미널 경험을 변화시킵니다:

  • 성능을 타협하지 않는 아름다운 미학
  • 개발 환경에 적응하는 지능적 컨텍스트
  • 쉘과 운영체제 간 크로스 플랫폼 일관성
  • 최대 기능을 가진 최소한의 설정

더 나은 터미널 경험을 찾는 초보자든 세밀한 제어를 원하는 파워 유저든, Starship은 아름다움, 성능, 기능성의 완벽한 균형을 제공합니다.

유용한 링크