⚡ 64 developer tools, always updated, new upstream releases land in apt within hours. Join the Discord

📅 Since , the apt mirror requires a subscription. See pricing · 🆓 There is an always-free mirror · 🔐 apt returning 401?

🖍️ Install Latest ble.sh on Debian

Bash Line Editor: syntax highlighting, auto-suggestions, vim and emacs modes and rich completion, in pure Bash

Latest version: 0.4.0 · updated 2026-10-13
SourceVersion
deb.griffo.io0.4.0 ✅
Official Debian🚫 not packaged
← Back to home
📌 Installing on a specific release? Debian 12 (bookworm) · Debian 13 (trixie) · Debian 14 (forky) · Debian Sid

What is ble.sh?

ble.sh, the Bash Line Editor, is a command line editor written in pure Bash that replaces GNU Readline in interactive Bash sessions. You keep Bash, your ~/.bashrc, your aliases and your scripts, and gain what usually means switching shells: syntax highlighting as you type, fish-like auto-suggestions from history, a full vim mode alongside emacs bindings, completion with menus and descriptions, abbreviations, and integration with bash-completion and fzf. It is written by Koichi Murase and released under the BSD-3-Clause licence. There is no binary to run: the package installs the script to /usr/share/blesh/ble.sh, and two lines in your ~/.bashrc turn it on.

🚀 Why Latest Versions Matter: ble.sh is developed continuously on its master branch, and tagged stable releases are rare and far apart, so upstream's own install instructions point to the nightly build or a git checkout. Debian and Ubuntu package a snapshot that stays frozen for the life of the release (Debian stable does not ship it at all). This repository follows the upstream nightly snapshots, so fixes for new Bash versions, terminals and completion integrations reach you through apt upgrade.

⚡ Key Features of ble.sh

🎨 Syntax Highlighting

Commands, keywords, strings, variables, redirections and file names are colored as you type, and an unknown command or a syntax error shows up before you press Enter.

💡 Auto-Suggestions

Fish-style suggestions from history and completion appear in gray after the cursor. Accept the whole suggestion with the right arrow or C-f, or one word at a time with M-f.

⌨️ Vim and Emacs Modes

Emacs bindings by default, and a full vi/vim mode with set -o vi: normal, insert and visual modes, text objects, registers and an optional vim-airline-style status line.

📋 Menu Completion

Tab opens a menu of candidates you move through with the arrow keys, with descriptions where available and ambiguous (fuzzy) matching.

✂️ Abbreviations

ble-sabbrev defines abbreviations that expand as you type, like fish abbreviations or zsh global aliases, so L becomes | less.

🐚 Pure Bash, No Binary

Nothing to compile and nothing architecture-specific: ble.sh is a Bash script that runs wherever Bash 3.0 or newer does, and it stays out of non-interactive shells and scripts.

🚀 Always ahead of the official archives: Debian and Ubuntu freeze package versions when a release ships. This repository publishes new upstream releases typically within hours. A simple apt upgrade keeps you on the latest version.

📦 Installation from deb.griffo.io

Run the commands

Step 1: Add Repository

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 update
install -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 update
sudo apt install extrepo
sudo extrepo enable griffo
sudo apt update

🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh, Uncloud and Zed; ble.sh is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.

How the free mirror works →

🧩 About the extrepo option. extrepo is Debian's own tool for external repositories: it writes the sources file and installs the signing key for you, checking the key against signed metadata first. This repository is registered with it as griffo, and the always-free mirror as griffo-free, so on Debian (bookworm, trixie, forky and sid) the commands above are the whole setup.

extrepo sets up the sources file and the key only, so a subscription's credentials still go in /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu is not covered, because extrepo publishes metadata for Debian suites only: there, use the sudo or root commands.

Step 2: Install ble.sh

# Install latest ble.sh
sudo apt install ble.sh

# Optional: vim-airline themes for the vi-mode status line
sudo apt install ble.sh-airline-themes
# Install latest ble.sh
apt install ble.sh

# Optional: vim-airline themes for the vi-mode status line
apt install ble.sh-airline-themes

Step 3: Enable ble.sh in your ~/.bashrc

# ble.sh has no command to run: Bash loads it from ~/.bashrc.
# Put this line near the TOP of ~/.bashrc:
[[ $- == *i* ]] && source /usr/share/blesh/ble.sh --noattach

# ...the rest of your ~/.bashrc stays as it is...

# And this line at the very END of ~/.bashrc:
[[ ${BLE_VERSION-} ]] && ble-attach

# Open a new terminal, then:
# Verify installation
echo $BLE_VERSION

🎯 Basic Usage Examples

Everyday use:

# Check that ble.sh is active in this shell
echo $BLE_VERSION

# Reload ble.sh after changing its settings
ble-reload

# Updates come through apt; ble-update points you there
sudo apt update && sudo apt upgrade
# Check that ble.sh is active in this shell
echo $BLE_VERSION

# Reload ble.sh after changing its settings
ble-reload

# Updates come through apt; ble-update points you there
apt update && apt upgrade

Settings in ~/.blerc:

# ble.sh reads its settings from ~/.blerc (or ~/.config/blesh/init.sh)
# Vim key bindings instead of emacs
set -o vi

# Wait 300 ms before showing an auto-suggestion
bleopt complete_auto_delay=300

# Turn auto-suggestions off entirely
bleopt complete_auto_complete=

# Change the color of the suggested text
ble-face auto_complete='fg=242'

Abbreviations, key bindings and integrations:

# Expand "L" into "| less" as you type
ble-sabbrev L='| less'

# Make Ctrl+C discard the current line
ble-bind -f 'C-c' discard-line

# fzf completion and key bindings, adapted to ble.sh
ble-import -d integration/fzf-completion
ble-import -d integration/fzf-key-bindings

# vim-airline-style status line (needs ble.sh-airline-themes)
ble-import vim-airline
bleopt vim_airline_theme=dark

🔧 Tool Integrations

ble.sh sits underneath your existing Bash setup instead of replacing it:

  • bash-completion: completions from the bash-completion package are picked up automatically and shown in the menu
  • fzf: ble-import loads versions of fzf's completion and key bindings adapted to ble.sh
  • Atuin: Atuin's Bash integration supports ble.sh, which gives it reliable preexec hooks for recording history
  • Starship / Oh My Posh: the prompts they generate keep working unchanged
  • Config file: ~/.blerc holds your bleopt, ble-face and ble-bind settings, separate from ~/.bashrc

🚀 Why Choose deb.griffo.io?

📊 Repository Comparison:
  • Official Debian: only in testing and unstable; the stable releases (bookworm and trixie) do not ship it
  • git clone + make: current, but built and installed by hand into ~/.local, and kept up to date with ble-update yourself
  • deb.griffo.io: latest version with automatic updates

📦 Package Build Repository

The Debian packages are automatically built and maintained in this GitHub repository:

🔗 Related Packages

Also available from deb.griffo.io:

🎯 Perfect for: Bash users who want fish or zsh conveniences without leaving Bash, servers where Bash is the only shell you get, vim users who want real modal editing on the command line, and anyone who would rather keep their ~/.bashrc than rewrite it for another shell.

💝 Support This Project

If this repository saves you time and effort, please consider supporting it!

⭐ Star on GitHub 🐦 Share on Twitter

Just after the command? See apt install ble.sh, one page covering Debian and Ubuntu.

📦 Recent releases from this repository

📚 Release-specific install guides

❓ Frequently asked questions

Is ble.sh in the official Debian repositories?

No, ble.sh is not packaged in the official Debian archives. This repository is currently the only apt source, serving ble.sh 0.4.0.

How do I install the latest ble.sh on Debian?

Add the deb.griffo.io repository once using the instructions above, then run: sudo apt install ble.sh. New releases arrive through the normal sudo apt upgrade.

Are the packages signed and how are they built?

Every package is signed with the repository's GPG key (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) and built from upstream releases in public GitHub packaging repositories that anyone can inspect.

Which Debian releases are supported?

Debian 12 Bookworm, Debian 13 Trixie, Forky and Sid.