Главная >> Инструкции >> Настройка Startship Promt для Bash

Настройка Startship Promt для Bash

Скорее всего, вы видели в интернете снимки экрана современных командных оболочек, таких как Fish или Zsh с OhMyZsh или даже использовали одну из них. Они имеют много настроек, а также приглашение ввода команд с очень детальной информацией, в плоть до активной ветки Git.

Часть из того что есть в Zsh можно получить и в Bash использовав для генерации приглашения ввода утилиту Starship Prompt. Она поддерживает много модулей вывода информации, в том числе для git, разных языков программирования и сервисов. В этой статье мы рассмотрим как настроить Starship для Bash в Ubuntu 24.04 или Fedora 42.


Содержание статьи

Настройка шрифта

Для того чтобы это всё нормально заработало и у вас отображались все символы ваш терминал должен использовать шрифт из семейства Nerd. Если вкратце, то это шрифты, которые содержат не только цифры и буквы, но и различные иконки. Сюда входит Font Awesome, Hack, JetBrains Mono, Source Code Pro и многие другие, названия которых можно найти здесь. В Fedora можно установить Source Code Pro выполнив такую команду:

sudo dnf install adobe-source-code-pro-fonts

А шрифт Hack можно установить такой командой:

sudo dnf install source-foundry-hack-fonts

После этого этот шрифт нужно активировать в настройках вашего эмулятора терминала. Например, в Pyxis нужно открыть Preferences, далее надо выключить переключатель Use System Font:

И выбрать шрифт Hack в поле Custom Font:

Установка Starship Prompt

Программа написана на Rust и поставляется в виде готового исполняемого файла, поэтому дистрибутив большого значения не имеет. И даже больше того, у программы есть скомпилированные файлы не только для Linux, но и для Windows и MacOS.

Вам достаточно скачать исполняемый файл программы со страницы релизов GitHub репозитория программы и разместить его в /usr/local/bin или любом другом удобном месте. Или можно использовать скрипт установки, который сделает всё за вас:

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

После этого остается добавить запуск программы в ~/.bashrc:

eval "$(starship init bash)"

Это всё. Далее вы можете открыть новое окно терминала и убедится что программа работает. Теперь можно переходить к её настройке.

Настройка Starship Prompt

Конфигурация программы находится в ~/.config/starship.toml. Если такого файла нет, то его можно создать:

touch ~/.config/starship.toml

В самом верху в файл можно добавить следующую строчку:

"$schema" = 'https://starship.rs/config-schema.json'

Эта строчка не отвечает за конфигурацию программы непосредственно, но описывает схему конфигурационного файла и улучшает автодополнение если вы используете какую-либо IDE для редактирования файла. К тому же в файле, на который ссылается эта директива вы сможете найти настройки по умолчанию для большинства модулей Starship. Сразу после установки приглашение ввода будет выглядеть вот так:

Основная идея Starship - отображать информацию только там, где она нужна, поэтому тут отображается только текущая директория и символ ожидания ввода команды.

1. Формат приглашения

Поскольку программа отвечает за приглашение ввода, то формат этого самого приглашения одна из самых важных частей. По умолчанию формат включает все переменные из всех модулей поддерживаемых программой:

format = """ $username\ $hostname\ $localip\ $shlvl\ $singularity\ $kubernetes\ $directory\ $vcsh\ $fossil_branch\ $fossil_metrics\ $git_branch\ $git_commit\ $git_state\ $git_metrics\ $git_status\ $hg_branch\ $pijul_channel\ $docker_context\ $package\ $c\ $cmake\ $cobol\ $daml\ $dart\ $deno\ $dotnet\ $elixir\ $elm\ $erlang\ $fennel\ $gleam\ $golang\ $guix_shell\ $haskell\ $haxe\ $helm\ $java\ $julia\ $kotlin\ $gradle\ $lua\ $nim\ $nodejs\ $ocaml\ $opa\ $perl\ $php\ $pulumi\ $purescript\ $python\ $quarto\ $raku\ $rlang\ $red\ $ruby\ $rust\ $scala\ $solidity\ $swift\ $terraform\ $typst\ $vlang\ $vagrant\ $zig\ $buf\ $nix_shell\ $conda\ $meson\ $spack\ $memory_usage\ $aws\ $gcloud\ $openstack\ $azure\ $nats\ $direnv\ $env_var\ $mise\ $crystal\ $custom\ $sudo\ $cmd_duration\ $line_break\ $jobs\ $battery\ $time\ $status\ $os\ $container\ $netns\ $shell\ $character """

Вот переменные, которые вас будут интересовать:

  • $username - имя пользователя
  • $hostname - имя хоста
  • $directory - текущая директория
  • $line_break - перевод строки
  • $cmd_duration - выводит время выполнения команды
  • $character - выводит символ, выводимый перед вводом команды, например $.

Несмотря на то, что здесь перечислены все модули, не все из них выводятся по умолчанию, потому что в настройках каждого модуля можно менять будет ли выводится из него какая-либо информация. Поэтому я рекомендую этот формат вообще не трогать, а настраивать нужные модули отдельно. Вам может понадобиться менять значение этой настройки, только если вы захотите поменять переменные местами.

Например, можно перенести директорию в новую строку, поместив её в конец, после $line_break. Для этого не обязательно указывать полностью стандартный формат, можно использовать переменную $all. Новые значения переопределят предыдущие, например:

format = '$all$directory$character'

Это будет выглядеть вот так:

3. Дополнительная пустая строка

По умолчанию после вывода команды будет выводится пустая строка. Для того чтобы это отключить достаточно добавить в конфигурационный файл такую настройку:

add_newline = false

4. Полный путь к текущей папке

По умолчанию, в Starship довольно нестандартное поведение для папок. Во первых путь к папке обрезается до трех последних папок в пути, во вторых если вы находитесь в репозитории, то путь будет обрезан относительно начала репозитория.

Для того чтобы показывать весь путь не зависимо ни от чего добавьте такие строчки конфигурации для модуля directory:

[directory] truncate_to_repo=false truncation_length = 0

5. Символ приглашения ввода

По умолчанию для перед полем ввода команды выводится символ "❯". Он будет зеленым если команда выполнена успешно и красным если произошла ошибка. Если вы хотите использовать привычный знак долара то вам надо будет переопределить настройки модуля character. Например, так:

success_symbol = '[\$](bold green)' error_symbol = '[\$](bold red)'

В квадратных скобках здесь указывается сам символ, а в круглых стиль и цвет. Для успешно выполненной команды и команды с ошибкой символ задается отдельно.

Этот способ настройки формата общий для всех модулей. Вы можете указать символы или переменную в квадратных скобках, а затем в круглых скобках указать для них стиль. Всё обычным текстом, без каких либо кодов и Escape-последовательностей.

6. Имя пользователя и хоста

По умолчанию имя хоста отображается только для SSH подключений, аналогично с именем пользователя. Если вы хотите чтобы эти данные оторбражались постоянно, добавьте такие строчки конфигурации:

[hostname] ssh_only = false style = 'bold green' format = '[$hostname$ssh_symbol]($style) ' ssh_symbol = ' 🌐' [username] show_always = true format = '[$user]($style)[@]($style)' style_user = 'bold green'

7. Состояние git

Если текущая папка содержит git репозиторий, то утилита отображает информацию, об этом репозитории. А именно активную ветку, а также информацию об изменениях.

Все обозначения можно найти в схеме конфигурационного файла, но вот основные из них:

  • ✘ - содержит удаленные файлы
  • » - содержит переименованные файлы
  • ! - содержит любые изменения
  • $ - содержит спрятанные (stashed) изменения

Эта информация отображается в скобках красным цветом. Вы можете настроить символы и их стиль с помощью модулей git_status и git_branch:

[git_branch] style = 'bold yellow' [git_status] style = 'bold yellow'

8. Отключение ненужных модулей

По умолчанию Starship имеет много модулей для языков программирования и сервисов. Часть из этих модулей активируются если в системе есть определённый конфигурационный файл, часть если в текущей папке есть файлы с определыннм разсирением. Например, модуль php показывает версию PHP в системе если в текущей папке есть php файлы, что вы могли видеть на снимках экрана в предыдущем разделе.

Это не всегда нужно и такие модули можно отключить. Синтаксис довольно простой. Пишите имя модуля в квадратных скобках, а дальше параметр disabled со значением true. Например, этот код отключает большинство не языков программирования:

[bun] disabled = true [buf] disabled = true [cmake] disabled = true [cobol] disabled = true [crystal] disabled = true [daml] disabled = true [dart] disabled = true [deno] disabled = true [dotnet] disabled = true [elixir] disabled = true [elm] disabled = true [erlang] disabled = true [fennel] disabled = true [gleam] disabled = true [golang] [gradle] disabled = true [haxe] disabled = true [helm] disabled = true [java] disabled = true [julia] disabled = true [kotlin] disabled = true [lua] disabled = true [meson] disabled = true [nim] disabled = true [nodejs] [ocaml] disabled = true [opa] disabled = true [perl] disabled = true [pulumi] disabled = true [purescript] disabled = true [python] [quarto] disabled = true [raku] disabled = true [red] disabled = true [rlang] disabled = true [ruby] disabled = true [rust] disabled = true [solidity] disabled = true [typst] disabled = true [swift] disabled = true [vagrant] disabled = true [vlang] disabled = true [zig] disabled = true [php] disabled = true

Я оставил включёнными только nodejs, golang и python. После всех настроек описанных выше приглашение ввода команды будет выглядеть вот так:

Выводы

В этой небольшой статье мы рассмотрели как настроить Starship Prompt для Bash в Ubuntu или Fedora. Как видите это может быть довольно полезно, если вы хотите получать дополнительную информацию о текущей директории и окружении, но не хотите использовать Zsh.

Оставьте комментарий