ble.sh とは
ble.sh(Bash Line Editor)は、純粋な Bash で書かれたコマンドラインエディタで、対話的な Bash セッションの GNU Readline を置き換えます。Bash も ~/.bashrc もエイリアスもスクリプトもそのままに、普通ならシェルを乗り換えないと手に入らないものが加わります。入力中のシンタックスハイライト、fish 風の履歴からの自動サジェスト、emacs キーバインドと並ぶ本格的な vim モード、メニューと説明付きの補完、略語展開、そして bash-completion や fzf との連携です。作者は Koichi Murase で、BSD-3-Clause ライセンスで公開されています。実行するバイナリはありません。パッケージはスクリプトを /usr/share/blesh/ble.sh にインストールし、~/.bashrc に 2 行足せば有効になります。
apt upgrade で届きます。
⚡ ble.sh の主な機能
🎨 シンタックスハイライト
コマンド、キーワード、文字列、変数、リダイレクト、ファイル名が入力中に色分けされ、存在しないコマンドや構文エラーは Enter を押す前にわかります。
💡 自動サジェスト
履歴と補完から作られる fish 風の候補が、カーソルの後ろに灰色で表示されます。右矢印か C-f で全体を、M-f で 1 単語ずつ確定できます。
⌨️ vim / emacs モード
既定は emacs キーバインド。set -o vi で本格的な vi/vim モードになり、ノーマル・挿入・ビジュアルモード、テキストオブジェクト、レジスタ、さらに vim-airline 風のステータスラインも使えます。
📋 メニュー補完
Tab で候補のメニューが開き、矢印キーで移動できます。説明があれば表示し、あいまい一致にも対応します。
✂️ 略語展開
ble-sabbrev で、入力中に展開される略語を定義できます。fish の略語や zsh のグローバルエイリアスのように、L を | less に展開できます。
🐚 純粋な Bash、バイナリなし
コンパイルするものも、アーキテクチャに依存するものもありません。ble.sh は Bash 3.0 以降が動く環境ならどこでも動く Bash スクリプトで、非対話シェルやスクリプトには手を出しません。
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か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは 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 に書きます。extrepo は Debian のスイート向けメタデータしか公開していないため Ubuntu は対象外です。Ubuntu では sudo または root のコマンドを使ってください。
ステップ 2: ble.sh をインストールする
# 最新の ble.sh をインストール
sudo apt install ble.sh
# 任意: vi モードのステータスライン用の vim-airline テーマ
sudo apt install ble.sh-airline-themes# 最新の ble.sh をインストール
apt install ble.sh
# 任意: vi モードのステータスライン用の vim-airline テーマ
apt install ble.sh-airline-themesステップ 3: ~/.bashrc で ble.sh を有効にする
# 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 も apt を案内します
sudo apt update && sudo apt upgrade# このシェルで ble.sh が有効か確認
echo $BLE_VERSION
# 設定を変えたら ble.sh を再読み込み
ble-reload
# 更新は apt で。ble-update も apt を案内します
apt update && apt upgrade~/.blerc での設定:
# ble.sh は ~/.blerc(または ~/.config/blesh/init.sh)から設定を読みます
# emacs ではなく vim のキーバインドにする
set -o vi
# 自動サジェストを出すまで 300 ms 待つ
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
# ble.sh 向けに調整された fzf の補完とキーバインド
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で、ble.sh 向けに調整された fzf の補完とキーバインドを読み込めます - 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: 最新版を自動更新でお届け
- ✅ 新しいスナップショット: 上流の nightly スナップショット。新しい Bash や端末への修正入り
- ✅ セットアップ不要: git clone も
makeも、ホームディレクトリで管理する 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 を使い続けたいすべての人に。