Что такое ble.sh?
ble.sh, Bash Line Editor, — это редактор командной строки, написанный на чистом Bash, который заменяет GNU Readline в интерактивных сеансах Bash. Вы сохраняете Bash, свой ~/.bashrc, алиасы и скрипты и получаете то, ради чего обычно меняют оболочку: подсветку синтаксиса прямо при вводе, автоподсказки из истории в стиле fish, полноценный режим vim наряду с привязками emacs, автодополнение с меню и описаниями, аббревиатуры и интеграцию с bash-completion и fzf. Автор — Koichi Murase, лицензия BSD-3-Clause. Запускать нечего: пакет устанавливает скрипт в /usr/share/blesh/ble.sh, а включают его две строки в вашем ~/.bashrc.
apt upgrade.
⚡ Ключевые возможности ble.sh
🎨 Подсветка синтаксиса
Команды, ключевые слова, строки, переменные, перенаправления и имена файлов подсвечиваются при вводе, а неизвестная команда или синтаксическая ошибка видна ещё до нажатия Enter.
💡 Автоподсказки
Подсказки в стиле fish из истории и автодополнения появляются серым после курсора. Примите всю подсказку стрелкой вправо или C-f, либо по одному слову через M-f.
⌨️ Режимы vim и emacs
По умолчанию привязки emacs, а с set -o vi полноценный режим vi/vim: нормальный режим, режим вставки и визуальный, текстовые объекты, регистры и необязательная строка состояния в стиле vim-airline.
📋 Автодополнение с меню
Tab открывает меню вариантов, по которому можно перемещаться стрелками, с описаниями, где они есть, и неоднозначным (нечётким) сопоставлением.
✂️ Аббревиатуры
ble-sabbrev задаёт аббревиатуры, которые раскрываются при вводе, как аббревиатуры fish или глобальные алиасы zsh: L превращается в | less.
🐚 Чистый Bash, без бинарника
Нечего компилировать и нет ничего, зависящего от архитектуры: ble.sh — это скрипт Bash, который работает везде, где есть Bash 3.0 или новее, и не вмешивается в неинтерактивные оболочки и скрипты.
apt upgrade держит вас на последней версии.
📦 Установка из deb.griffo.io
Шаг 1: Добавить репозиторий
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 Есть вечно бесплатное зеркало. deb-free.griffo.io раздаёт пакеты бесплатно навсегда — без аккаунта, без подписки, не более 2 месяцев позади upstream, исправления безопасности сразу. Сейчас там cliamp, Ghostty, lazydocker, Oh My Posh, Uncloud и Zed; ble.sh среди них нет, поэтому репозиторий выше — единственный способ установить его сегодня; попросите, и его можно добавить.
🧩 О варианте extrepo. extrepo — штатный инструмент Debian для внешних репозиториев: он создаёт файл sources и устанавливает ключ подписи, предварительно сверив его с подписанными метаданными. Этот репозиторий зарегистрирован в нём как griffo, а бесплатное навсегда зеркало — как griffo-free, поэтому в Debian (bookworm, trixie, forky и sid) команды выше и есть вся настройка.
extrepo настраивает только файл sources и ключ — учётные данные подписки по-прежнему прописываются в /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu не поддерживается, так как extrepo публикует метаданные только для выпусков Debian: там используйте команды с sudo или от root.
Шаг 2: Установить ble.sh
# Установить последнюю версию ble.sh
sudo apt install ble.sh
# Необязательно: темы vim-airline для строки состояния в режиме vi
sudo apt install ble.sh-airline-themes# Установить последнюю версию ble.sh
apt install ble.sh
# Необязательно: темы vim-airline для строки состояния в режиме vi
apt install ble.sh-airline-themesШаг 3: Включить ble.sh в ~/.bashrc
# У ble.sh нет отдельной команды: Bash загружает его из ~/.bashrc.
# Эту строку поставьте ближе к НАЧАЛУ ~/.bashrc:
[[ $- == *i* ]] && source /usr/share/blesh/ble.sh --noattach
# ...остальная часть ~/.bashrc остаётся как есть...
# А эту строку — в самый КОНЕЦ ~/.bashrc:
[[ ${BLE_VERSION-} ]] && ble-attach
# Откройте новый терминал, затем:
# Проверить установку
echo $BLE_VERSION🎯 Базовые примеры использования
Повседневное использование:
# Проверить, что ble.sh активен в этой оболочке
echo $BLE_VERSION
# Перезагрузить ble.sh после изменения настроек
ble-reload
# Обновления приходят через apt; ble-update отсылает туда же
sudo apt update && sudo apt upgrade# Проверить, что ble.sh активен в этой оболочке
echo $BLE_VERSION
# Перезагрузить ble.sh после изменения настроек
ble-reload
# Обновления приходят через apt; ble-update отсылает туда же
apt update && apt upgradeНастройки в ~/.blerc:
# ble.sh читает настройки из ~/.blerc (или ~/.config/blesh/init.sh)
# Привязки vim вместо emacs
set -o vi
# Ждать 300 мс перед показом автоподсказки
bleopt complete_auto_delay=300
# Полностью отключить автоподсказки
bleopt complete_auto_complete=
# Изменить цвет текста подсказки
ble-face auto_complete='fg=242'Аббревиатуры, привязки клавиш и интеграции:
# Раскрывать «L» в «| less» при вводе
ble-sabbrev L='| less'
# Ctrl+C сбрасывает текущую строку
ble-bind -f 'C-c' discard-line
# Автодополнение и привязки fzf, адаптированные под ble.sh
ble-import -d integration/fzf-completion
ble-import -d integration/fzf-key-bindings
# Строка состояния в стиле vim-airline (нужен ble.sh-airline-themes)
ble-import vim-airline
bleopt vim_airline_theme=dark🔧 Интеграция с другими инструментами
ble.sh встраивается под вашу настройку Bash, а не заменяет её:
- bash-completion: дополнения из пакета
bash-completionподхватываются автоматически и показываются в меню - fzf:
ble-importзагружает версии автодополнения и привязок fzf, адаптированные под ble.sh - Atuin: интеграция Atuin с Bash поддерживает ble.sh и получает через него надёжные хуки preexec для записи истории
- Starship / Oh My Posh: созданные ими приглашения продолжают работать без изменений
- Файл настроек:
~/.blercхранит ваши настройкиbleopt,ble-faceиble-bindотдельно от~/.bashrc
🚀 Почему стоит выбрать deb.griffo.io?
- Официальный Debian: только в testing и unstable; стабильные релизы (bookworm и trixie) его не содержат
- git clone + make: свежая версия, но собирается и ставится вручную в
~/.local, а обновлять её черезble-updateприходится самому - deb.griffo.io: последняя версия с автоматическими обновлениями
- ✅ Свежие снимки: ночные снимки проекта с исправлениями для новых версий Bash и терминалов
- ✅ Без ручной настройки: ни git clone, ни
make, ни копии ble.sh в домашнем каталоге, которую нужно обновлять - ✅ Автоматические обновления: пакеты обновляются в течение часов после выхода версии
- ✅ Полный пакет: полное дерево ble.sh в
/usr/share/blesh, документация и необязательный пакетble.sh-airline-themes - ✅ Любая архитектура: пакет собран как
Architecture: all, поэтому amd64, arm64, armhf, riscv64 и остальные ставят один и тот же пакет - ✅ Много дистрибутивов: работает на Bookworm, Trixie, Forky и Sid
- ✅ Простое обслуживание: обновления обычными командами apt
📦 Репозиторий сборки пакета
Пакеты для Debian собираются и поддерживаются автоматически в этом репозитории GitHub:
- 🖍️ ble.sh-debian - Сборки последних выпусков
🔗 Похожие пакеты
Также доступны в deb.griffo.io:
- fzf - Нечёткий поиск, с которым интегрируется ble.sh
- Atuin - История оболочки в базе данных, с поддержкой ble.sh
- Starship - Приглашение для любых оболочек, работающее под ble.sh
- zoxide - Умный cd, который запоминает ваши каталоги
~/.bashrc, а не переписывать его под другую оболочку.