[Starship] 셸이 뭐든 프롬프트를 통일하는 도구
![[Starship] 셸이 뭐든 프롬프트를 통일하는 도구](https://blog.kakaocdn.net/dna/ccfsHZ/dJMcajwo0ev/AAAAAAAAAAAAAAAAAAAAAA2LIBZAYCzYRlfqhVKuK1WFi7Hgq6VNgCJMGt1fb-YS/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1785509999&allow_ip=&allow_referer=&signature=8gK0sKjvMQZRLTbMCecep88DzTc%3D)
Starship, 셸이 뭐든 프롬프트를 하나로 통일하는 도구
Bash에서 쓰던 프롬프트 설정을 Zsh로 옮기면 그대로 깨집니다. PowerShell에서는 또 다른 문법을 배워야 합니다. Starship은 그 셸별 프롬프트 설정을 TOML 파일 하나로 통일하는 Rust 기반 도구입니다. 무엇을 대체하는지, 설치와 초기화, 설정 파일 구조, 자주 쓰는 모듈, 그리고 미리 알아둘 함정까지 정리했습니다.
셸마다 다시 짜던 프롬프트 설정을 하나로 모읍니다
터미널 프롬프트(줄 앞에 뜨는 user@host ~/project $ 같은 부분)를 꾸미는 전통적인 방법은 셸마다 문법이 다릅니다. Bash는 PS1 환경변수에 이스케이프 코드를 넣고, Zsh는 별도의 프롬프트 확장 문법을 쓰며, PowerShell은 prompt 함수를 정의합니다. 그래서 여러 셸을 오가는 사람은 같은 모양을 만들려고 설정을 세 번 짜게 됩니다.
Starship은 이 부분을 셸 바깥으로 빼냅니다. 프롬프트를 그리는 로직을 Starship 실행 파일이 담당합니다. 각 셸은 "프롬프트 그릴 때 Starship을 호출해라"라는 초기화 한 줄만 갖습니다. 실제 모양은 셸과 무관하게 ~/.config/starship.toml 파일 하나가 결정합니다. Bash, Zsh, Fish, PowerShell, Nushell, Elvish 등 문서가 안내하는 셸이 모두 같은 설정 파일을 공유합니다.
| 구분 | 전통적 프롬프트 설정 | Starship |
|---|---|---|
| 설정 위치 | 셸마다 다른 파일·문법 | 공용 starship.toml 한 파일 |
| 셸 이식성 | 셸 바꾸면 다시 작성 | 초기화 한 줄만 추가 |
| Git·언어 정보 | 직접 스크립트 작성 | 모듈로 기본 제공 |
| 구현 | 셸 스크립트 | Rust 단일 실행 파일 |
설치하고 셸에 붙이는 순서
준비물이 하나 있습니다. Starship의 기본 모양은 아이콘 글리프를 쓰기 때문에, 터미널에 Nerd Font 계열 폰트를 설치하고 지정해야 아이콘이 깨지지 않고 보입니다. 아이콘 없이 쓰고 싶다면 뒤에서 설명할 "No Nerd Fonts" 프리셋으로 텍스트만 쓰도록 바꾸면 됩니다.
설치는 설치 스크립트나 패키지 매니저로 합니다. macOS·Linux에서는 Homebrew, Windows에서는 Winget으로도 받습니다.
# 설치 스크립트 (macOS / Linux)
curl -sS https://starship.rs/install.sh | sh
# 또는 Homebrew
brew install starship
# Windows (Winget)
winget install starship
설치했다고 바로 적용되지는 않습니다. 셸 설정 파일 맨 끝에 초기화 명령을 추가해야 합니다. 셸마다 명령이 조금씩 다릅니다.
# Bash — ~/.bashrc 끝에
eval "$(starship init bash)"
# Zsh — ~/.zshrc 끝에
eval "$(starship init zsh)"
# Fish — ~/.config/fish/config.fish 끝에
starship init fish | source
추가한 뒤 셸을 새로 열면 프롬프트가 Starship 모양으로 바뀝니다. 여기까지는 설정 파일 없이도 동작하며 이 상태가 기본값입니다.
설정은 TOML 파일 하나에서 끝납니다
세부 모양은 ~/.config/starship.toml에서 조정합니다. 이 파일이 없으면 기본 설정으로 동작하고 만들어 두면 그 내용이 우선합니다. 다른 경로에 두고 싶으면 STARSHIP_CONFIG 환경변수로 위치를 바꿉니다.
파일 최상단에는 프롬프트 전체에 걸리는 옵션을 둡니다. 대표적으로 add_newline은 프롬프트 사이에 빈 줄을 넣을지 정하고(기본값 true), format은 어떤 모듈이 어떤 순서로 나올지 정의합니다. 오른쪽 정렬 영역이 필요하면 right_format을 씁니다.
# ~/.config/starship.toml
# 에디터 자동완성용 스키마 (선택)
"$schema" = 'https://starship.rs/config-schema.json'
# 프롬프트 사이에 빈 줄 넣기
add_newline = true
# 프롬프트 기호를 바꾸기
[character]
success_symbol = '[➜](bold green)'
error_symbol = '[✗](bold red)'
# 특정 모듈 끄기
[package]
disabled = true
모듈이 프롬프트의 구성 단위입니다
Starship에서 프롬프트에 뜨는 정보 조각 하나하나를 모듈이라고 부릅니다. 각 모듈은 [모듈이름] 헤더로 개별 설정하며 필요 없으면 disabled = true로 끕니다. 모듈은 상황에 맞춰 나타나는 것이 특징입니다. 예를 들어 언어 런타임 모듈은 해당 프로젝트 안에 있을 때만 버전을 보여줍니다.
자주 쓰는 모듈
character— 프롬프트 기호. 직전 명령이 성공했는지 실패했는지에 따라 색이 바뀝니다.directory— 현재 디렉터리 경로를 표시합니다.git_branch/git_status— 활성 Git 브랜치와 저장소 상태(변경·스테이징 등)를 기호로 보여줍니다.nodejs·python·rust— 각 언어 프로젝트 안에서만 런타임 버전을 표시합니다.aws— 활성 AWS 프로필과 리전을 보여줍니다.
프리셋으로 처음부터 안 만들어도 됩니다
설정을 처음부터 손으로 짜지 않아도 됩니다. Starship 문서에는 커뮤니티가 만든 프리셋이 12종 올라와 있습니다. 대표적으로 아이콘을 텍스트로 바꾸는 "No Nerd Fonts", 세그먼트를 대괄호로 감싸는 "Bracketed Segments", 언어 런타임 버전을 숨겨 컨테이너 환경에 맞춘 "No Runtime Versions", 그리고 "Pure Prompt"·"Tokyo Night"·"Gruvbox Rainbow"·"Catppuccin Powerline" 같은 테마형 프리셋이 있습니다.
프리셋은 명령 한 번으로 설정 파일에 내보냅니다. 아래처럼 하면 선택한 프리셋 내용이 starship.toml로 저장되고 이후 그 파일을 취향대로 고쳐 쓰면 됩니다.
# 프리셋을 설정 파일로 내보내기
starship preset nerd-font-symbols -o ~/.config/starship.toml
# 적용 가능한 프리셋 목록 보기
starship preset --list
미리 알아두면 좋은 함정
- Nerd Font를 안 깔면 아이콘이 깨집니다. 네모나 물음표로 보이면 폰트 문제입니다. 폰트를 설치·지정하거나, 아이콘을 안 쓰는 프리셋으로 바꾸면 됩니다.
- 느린 명령이 프롬프트를 늦출 수 있습니다. 모듈이 버전 등을 확인하려고 외부 명령을 부르는데, 이게 느리면 프롬프트가 뜨는 데 지연이 생깁니다.
command_timeout(명령 실행 제한 시간)과scan_timeout(파일 스캔 제한 시간)을 조정해 상한을 둘 수 있습니다. - 초기화 줄의 위치가 중요합니다.
starship init줄은 셸 설정 파일의 끝부분에 두는 것이 안전합니다. 다른 프롬프트 도구나PS1을 건드리는 설정과 순서가 엉키면 Starship 설정이 덮일 수 있습니다. - 셸 재시작이 필요합니다. 초기화 줄을 추가하거나
starship.toml을 고친 뒤에는 셸을 새로 열어야 반영됩니다.
누구에게 맞나
여러 셸이나 여러 머신을 오가는 사람에게 이점이 큽니다. starship.toml 하나만 dotfiles로 관리하면 Bash를 쓰는 서버든 Zsh를 쓰는 로컬이든 같은 프롬프트가 나오기 때문입니다. Git 브랜치·상태와 언어 버전을 프롬프트에서 바로 보고 싶은데 셸 스크립트를 직접 짜기는 번거로운 경우에도 맞습니다. 반대로 이미 PS1 한 줄에 만족하고 아이콘 폰트를 새로 깔기 싫다면 굳이 바꿀 이유는 크지 않습니다. 시작은 설치 후 초기화 한 줄만 추가해 기본값을 써 보고, 마음에 드는 프리셋을 내보낸 뒤 모듈을 하나씩 켜고 끄며 다듬는 순서를 권합니다.
starship init 줄을 추가해야 적용됩니다. 아이콘이 깨져 보이면 Nerd Font 설치·지정 여부부터 확인하고 아이콘을 안 쓰려면 "No Nerd Fonts" 프리셋으로 내보내면 됩니다. 설정 파일 경로는 기본 ~/.config/starship.toml이며, 필요하면 STARSHIP_CONFIG 환경변수로 다른 위치를 가리킵니다.직접 사용 후기가 아니라 공식 문서를 바탕으로 정리한 객관 소개 글입니다. 버전·기능·명령은 이후 릴리즈에서 달라질 수 있으니, 실제 설정 전 공식 문서를 확인하세요.
'개발자 도구 > 터미널 & 환경' 카테고리의 다른 글
| [zoxide] cd 대신 쓰는 디렉터리 점프 (0) | 2026.08.10 |
|---|---|
| [fzf] 터미널 히스토리 검색이 달라지는 퍼지 파인더 활용법 (0) | 2026.07.20 |
| [Bun] Node와 npm을 대체하는 올인원 도구 (0) | 2026.07.01 |
| [tmux] SSH가 끊겨도 작업이 안 죽는 이유 (0) | 2026.06.24 |
| [Warp] 터미널을 블록 단위로 다루는 도구 (0) | 2026.06.15 |
📚 같이 보면 좋은
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 일정액의 수수료를 제공받습니다."