Starship: быстрый кросс‑оболочный prompt

Оглавление
- Предварительные требования
- Установка Starship
- Инициализация в оболочке
- Настройка starship.toml
- Модули, переменные и стили
- Примеры конфигураций и пресеты
- Как удалить Starship
- Часто задаваемые вопросы
- Когда Starship не подходит
- Альтернативные подходы и советы по миграции
- Контрольные списки и готовность к развёртыванию
- Краткое резюме
Предварительные требования
Прежде чем начать, убедитесь, что у вас установлен удобный моноширинный шрифт с иконками (nerd font). Starship использует символы и эмодзи в prompt, поэтому без подходящего шрифта символы могут отображаться некорректно.
Что важно знать:
- Nerd Font — это набор шрифтов, объединённый с иконками, который хорошо подходит для терминала.
- Рекомендуемый шрифт: Fira Code Nerd Font (или любой другой из коллекции Nerd Fonts).
- Для предустановленного Linux‑окружения инструкция по установке шрифтов — ниже.
Короткая инструкция по установке шрифта в домашнюю директорию (локально для текущего пользователя):
# Создать локальную директорию шрифтов (если ещё не создана)
mkdir -p ~/.local/share/fonts
# Переместить распакованный каталог шрифтов (в примере FiraCode)
mv FiraCode ~/.local/share/fonts/
# Обновить кеш шрифтов (в некоторых дистрибутивах)
fc-cache -f -vЕсли вы хотите подробную инструкцию по установке шрифтов в конкретном окружении (GNOME, KDE, macOS), найдёте её в руководствах по установке шрифтов для вашей ОС.
Важно: после установки шрифта перезапустите терминал или эмулятор терминала, чтобы новый шрифт стал доступен.
Установка Starship
Установить Starship проще всего через официальный инсталлятор. Выполните команду в домашнем каталоге или любой другой удобной директории:
curl -sS https://starship.rs/install.sh | shЭта команда скачает и установит бинарный файл starship и попытается поместить его в одну из директорий в PATH (обычно /usr/local/bin или ~/.local/bin).
Проверка установки:
starship --versionЕсли команда возвращает версию — установка успешна.
Инициализация Starship в оболочке
Чтобы Starship запускался при каждом открытии оболочки, нужно добавить строку инициализации в конфигурационный файл вашей оболочки.
Для bash откройте ~/.bashrc и добавьте:
eval "$(starship init bash)"Для zsh откройте ~/.zshrc и добавьте:
eval "$(starship init zsh)"Для fish-шелла используйте соответствующую команду из документации Starship:
eval (starship init fish)После добавления строки перезапустите терминал или выполните source ~/.bashrc / source ~/.zshrc.
Если вы используете другую оболочку, загляните в официальную документацию Starship — там есть инструкции для большинства популярных оболочек.

Настройка starship.toml
Starship конфигурируется через файл в формате TOML. По умолчанию ожидается файл:
~/.config/starship.tomlСоздать директорию и файл можно так:
mkdir -p ~/.config
touch ~/.config/starship.tomlЕсли вы хотите хранить конфигурацию в нестандартном месте, можно указать переменную окружения STARSHIP_CONFIG. Добавьте в конец ~/.bashrc или ~/.zshrc:
export STARSHIP_CONFIG=~/example/non/default/path/starship.tomlПосле этого перезапустите оболочку.
Понятие модуля и переменных
- Модуль — это логическая часть prompt, которая отображает контекст (например, git, nodejs, python, time и т.д.).
- Переменная — это подэлемент модуля, который содержит конкретную информацию (например, $version, $branch, $path). Переменные в формате TOML внутри формата помечаются знаком $. Имя переменной может содержать только буквы, цифры и символ «_».
Пример: модуль nodejs может иметь переменную version, которую можно вставить в формат с помощью $version.
Группы текста и стили
В Starship каждая «группа текста» состоит из двух частей:
- Формат в квадратных скобках [ ] — сюда вставляются текст, переменные и вложенные группы.
- Стиль в круглых скобках ( ) — описывает цвет, фон и модификаторы (bold, underline и т. п.).
Примеры:
[make_tech_easier](yellow bold)— напечатает «make_tech_easier» жирным жёлтым текстом.[👍 All Done](green)— эмодзи и текст зелёным.[a [b](green) c](red)— вложенная группа: a и c будут красными, b — зелёным.
Дополнительные варианты стилей:
- Фоновый цвет:
(fg:red bg:blue)— красный текст на синем фоне. - ANSI цвета:
(bold fg:27)— полужирный текст с ANSI 27 как цветом переднего плана. - HEX:
(underline bg:#bf5700)— подчёркнутый текст на ярко‑оранжевом фоне.

Базовые параметры prompt
Четыре основных глобальных параметра, которые влияют на общий вид prompt:
- format — задаёт общий layout prompt. Вставляются модули и текстовые группы.
- scan_timeout — таймаут в миллисекундах для сканирования файлов/директорий (используется, чтобы не тормозить prompt в больших репозиториях).
- command_timeout — таймаут для выполнения команд внутри модулей.
- add_newline — булево значение: если true, добавляет пустую строку перед prompt.
Пример простого конфигурационного фрагмента:
# Использовать собственный формат
format = """
[┌───────────────────>](bold green)
[│](bold green)$directory$rust$package
[└─>](bold green) """
# Ожидать 10 ms при проверке файлов в текущей директории
scan_timeout = 10
# Отключить пустую строку в начале prompt
add_newline = falseДобавление модуля — пример Python
Модули активируются добавлением секции в starship.toml, например:
[python]
symbol = "🐍 "
pyenv_version_name = trueПараметры модуля могут различаться. Например, чтобы принудительно брать версию только из python3:
[python]
python_binary = "python3"Модуль Python будет показываться только если Starship обнаружит соответствующие артефакты в текущей директории (виртуальную среду, файлы с расширением .py и т.д.). То же правило применимо к большинству модулей.
Пресеты и готовые конфигурации
Если не хочется собирать все параметры вручную, используйте пресеты — это готовые файлы starship.toml, которыми делятся пользователи.
Ниже — пример комплексного пресета, который меняет формат, цвета и ряд модулей. Вставьте этот фрагмент в ваш ~/.config/starship.toml, затем перезапустите терминал.
format = """
[←](#9A348E)\
$username\
[→](bg:#DA627D fg:#9A348E)\
$directory\
[→](fg:#DA627D bg:#FCA17D)\
$git_branch\
$git_status\
[→](fg:#FCA17D bg:#86BBD8)\
$c\
$elixir\
$elm\
$golang\
$haskell\
$java\
$julia\
$nodejs\
$nim\
$rust\
[→](fg:#86BBD8 bg:#06969A)\
$docker_context\
[→](fg:#06969A bg:#33658A)\
$time\
[→ ](fg:#33658A)\
"""
[username]
show_always = true
style_user = "bg:#9A348E"
style_root = "bg:#9A348E"
format = '[$user ]($style)'
[directory]
style = "bg:#DA627D"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = "📄 "
"Downloads" = "📥 "
"Music" = "🎜 "
"Pictures" = "📷 "
[c]
symbol = "© "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
[docker_context]
symbol = "🐳 "
style = "bg:#06969A"
format = '[[ $symbol $context ](bg:#06969A)]($style) $path'
[elixir]
symbol = "💧 "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
# ... остальные модули как в примере выше
[time]
disabled = false
time_format = "%R" # Часы:Минуты
style = "bg:#33658A"
format = '[[ 🤍 $time ](bg:#33658A)]($style)'После сохранения и перезапуска терминала ваш prompt будет выглядеть как в примере изображения.

Как удалить Starship
Пошагово удаление выглядит так:
- Удалите конфигурационный файл
rm ~/.config/starship.toml- Удалите строку инициализации из конфигурации оболочки (~/.bashrc, ~/.zshrc и т.д.).
- Удалите бинарь starship из системы. Один из безопасных способов — найти путь к бинарю и удалить его:
sh -c 'rm "$(command -v "starship")"'- Перезапустите терминал — prompt вернётся к настройкам вашей оболочки по умолчанию.
Часто задаваемые вопросы
Как перенести стиль на другой компьютер?
Скопируйте файл ~/.config/starship.toml на другой компьютер, установите Starship и перенесите шрифты (nerd fonts). Затем перезапустите терминал.
Какие есть альтернативы Starship?
- Для zsh: oh‑my‑zsh, spaceship
- Для fish: oh‑my‑fish, fisher
- Лёгкие альтернативы: pure, synth-shell
Выбор зависит от вашей оболочки, привычек и желания гибко настраивать prompt.
Когда Starship не подходит
Starship отлично работает для большинства пользователей, но есть сценарии, где он может не быть лучшим выбором:
- Очень старые системы с нетипичным шеллом без поддержки необходимых расширений.
- Среды с жёсткими ограничениями по времени отклика: если у вас медленный сетевой диск в домашней директории или огромные репозитории, некоторые модули могут увеличивать задержку. В этом случае лучше увеличить scan_timeout или отключить проблемные модули.
- Если вам нужно критически легковесное решение без зависимостей — простая PS1‑строка может быть достаточно.
Важно: прежде чем отказываться от Starship, протестируйте его с отключёнными модулями и увеличенным scan_timeout.
Альтернативные подходы и советы по миграции
Если вы мигрируете с другой системы:
- Экспортируйте существующие настройки оболочки (PS1, функции, алиасы) и сохраните в dotfiles.
- Сравните функциональность: какие модули вам нужны (git, docker, python) — настройте только их.
- Используйте относительный путь для конфигов в dotfiles и симлинки (ln -s), чтобы быстро разворачивать на новых машинах.
Примеры команд для быстрой миграции конфигурации:
# Скопировать конфиг starship на новую машину
scp ~/.config/starship.toml user@remote:~/.config/starship.toml
# Синхронизировать dotfiles через git
git clone git@github.com:you/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow starship # или другие способы развертыванияКонтрольные списки и готовность к развёртыванию
Роли и что проверить перед развёртыванием на командных рабочих станциях:
Разработчик:
- Проверил, что все требуемые модули корректно работают в локальной среде.
- Установил нужные шрифты и проверил отображение эмодзи.
- Настроил scan_timeout для больших репозиториев.
DevOps / SRE:
- Убедился, что инсталлятор безопасно работает в образе CI/CD (если требуется).
- Предусмотрел fallback сценарий при неудачной инициализации (например, оставить стандартный PS1).
Документация:
- Включить инструкции по установке шрифтов для всех поддерживаемых ОС.
- Приложить пример конфигурации и краткую справку по часто изменяемым параметрам.
Мини‑методика настройки prompt для команды (шаги)
- Выберите обязательные модули (git, nodejs, python, docker).
- Создайте базовый shared starship.toml и загрузите в репозиторий dotfiles.
- Настройте цвета и сокращения путей (substitutions) для единообразия.
- Протестируйте в разных терминалах (GNOME Terminal, iTerm2, Windows Terminal).
- Соберите обратную связь и обновите конфиг.
Примеры типичных проблем и способы их решения
Проблема: медленный prompt в больших git‑репозиториях. Решение: увеличить scan_timeout или отключить git_status, включить только git_branch.
Проблема: «неправильные» символы или пустоты вместо эмодзи. Решение: установить Nerd Font и выбрать его в настройках терминала.
Проблема: модуль не отображается. Решение: убедитесь, что присутствуют ожидаемые артефакты (например, для Python — virtualenv или файлы .py).
Шаблон проверки конфигурации (quick checklist)
- starship –version возвращает версию
- eval “$(starship init shell)” добавлен в конфиг оболочки
- ~/.config/starship.toml присутствует и валиден
- Шрифт настроен и отображается корректно
- Нет лишних задержек при открытии новой сессии
Резюме
Starship — лёгкий и гибкий способ улучшить приглашение командной строки. Он подходит большинству разработчиков благодаря высокой скорости, простоте конфигурации через TOML и большому набору модулей. Для командной работы имеет смысл создать базовый пресет и развернуть его через dotfiles. Если у вас ограничены ресурсы или вы используете очень специфическую оболочку, рассмотрите альтернативы.
Ключевые шаги для старта: установить Nerd Font, установить Starship, добавить инициализацию в конфиг оболочки, создать ~/.config/starship.toml и адаптировать пресет под свои задачи.
Важно: тестируйте изменения и оставляйте fallback (стандартный PS1) на случай, если в какой‑то среде Starship будет вести себя нестабильно.
Экспортируйте и переносите конфигурацию вместе с шрифтами — это сделает переход на новый компьютер простым и предсказуемым.
Похожие материалы
Как выйти из группового чата на iPhone
Добавить время на дорогу в Google Календарь
Wsappx — как убрать высокую загрузку CPU
LaTeX в Emacs через Org Mode
Просмотреть и удалить диагностические данные Windows 10