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: 현재 컨텍스트와 네임스페이스를 표시합니다
성능 팁
- 선택적 모듈 로딩: 실제로 사용하는 모듈만 활성화하세요
- 타임아웃 설정: 느린 네트워크를 위해
command_timeout
을 조정하세요 - 사용하지 않는 기능 비활성화: 더 빠른 프롬프트를 위해 패키지 감지를 끄세요
# 느린 모듈 비활성화
[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-Zsh | Starship |
---|---|---|
성능 | 느린 시작 | 번개처럼 빠름 |
크로스 쉘 | 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은 아름다움, 성능, 기능성의 완벽한 균형을 제공합니다.