markdown

はじめに (対象読者・この記事でわかること)

本記事は、Linux/macOS のターミナルを日常的に利用している開発者やシステム管理者、そして Bash や Zsh から別のシェルへ移行を検討している方を対象としています。Fish Shell の基本的なインストール手順や設定方法だけでなく、独自のプロンプト作成や自動補完・関数定義といった高度なカスタマイズ手法も網羅的に解説します。この記事を読むことで、Fish の魅力を実感し、作業効率を向上させる具体的なテクニックを習得できます。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。

  • 基本的な Linux/macOS のコマンド操作
  • Bash や Zsh など他のシェルの利用経験(必須ではないがあると理解が早い)

Fish Shell の基本と特徴

Fish(Friendly Interactive SHell)は、ユーザビリティとインタラクティブ性に重点を置いたモダンシェルです。標準でシンタックスハイライト、コマンド履歴の自動サジェスト、強力なタブ補完機能が備わっており、設定ファイルもシンプルな構文で記述できます。従来のシェルと比べて学習コストが低く、初心者でもすぐに快適な環境を構築できる点が大きな魅力です。また、fish_config というウェブ UI を通じて GUI で設定できる点も特徴的です。これらの機能は、開発・デバッグ・サーバ運用など幅広いシーンで作業効率を大幅に向上させます。

Fish Shell の設定と実践的な使い方

このセクションでは、Fish のインストールから実務で活用できる具体的なカスタマイズまでをステップごとに解説します。

ステップ1: インストールと初期設定

  1. インストール
    ```bash # Debian/Ubuntu 系 sudo apt update && sudo apt install fish

# macOS (Homebrew) brew install fish 2. **デフォルトシェルに設定**bash # /etc/shells に fish が無ければ追加 echo /usr/local/bin/fish | sudo tee -a /etc/shells # ログインシェルを fish に変更 chsh -s $(which fish) `` 3. **初回起動** ターミナルを再起動すると自動で fish が起動します。fish_config` コマンドでブラウザベースの設定 UI が開くので、まずはテーマとフォントを好みのものに変更しましょう。

ステップ2: プロンプトと補完のカスタマイズ

Fish では fish_prompt 関数を上書きするだけでプロンプトを自由に設計できます。例として、Git ブランチと現在のディレクトリを表示するプロンプトを作成します。

Fish
function fish_prompt set_color green echo -n (prompt_pwd) # カレントディレクトリ set_color normal # Git 情報がある場合だけ表示 if command -v git > /dev/null set branch (git symbolic-ref --short HEAD ^/dev/null) if test -n "$branch" echo -n " (" set_color magenta echo -n $branch set_color normal echo -n ")" end end echo -n ' > ' end

このコードを ~/.config/fish/functions/fish_prompt.fish に保存すれば、次回から自動的に適用されます。

補完の拡張

Fish の補完は complete コマンドで簡単に追加できます。例として、docker コマンドのサブコマンド補完を追加します。

Fish
complete -c docker -f -a "(docker images -q | xargs -I{} docker inspect --format='{{.RepoTags}}' {})"

ハマった点やエラー解決

1. chsh が権限エラーになる

症状: chsh: /usr/local/bin/fish: non-standard shell
原因: /etc/shells に fish のパスが登録されていない。

解決策: 管理者権限でパスを追記した後、再度 chsh -s $(which fish) を実行。

2. カラースキームが正しく表示されない

症状: プロンプトが真っ白になる、または色が乱れる。
原因: 端末エミュレータが 256 色以上に対応していない、または TERMxterm になっている。

解決策: TERM=xterm-256color を環境変数に設定し、端末の設定で 256 色モードを有効化。設定は ~/.config/fish/config.fishset -gx TERM xterm-256color を追記。

3. fish_config が起動しない

症状: fish_config と入力してもコマンドが見つからない。
原因: Fish のバージョンが古く、fish_config が含まれていない。

解決策: パッケージマネージャーで最新版にアップデート。例: brew upgrade fish または sudo apt-get install --only-upgrade fish

解決策のまとめ

  • シェル登録: /etc/shells にパスを手動で追加し、chsh を再実行。
  • 端末設定: TERM 環境変数を xterm-256color に統一し、256 色モードを有効化。
  • バージョン管理: 常に最新の Fish バージョンを使用し、fish_config を利用可能に保つ。

まとめ

本記事では、Fish Shell の導入からプロンプトや補完機能の高度なカスタマイズ、実装中に遭遇しやすいエラーとその対処法までを体系的に解説しました。

  • Fish の基本操作とインストール手順
  • プロンプト・補完のカスタマイズ例
  • 実務で役立つトラブルシューティング

この記事を通じて、読者は Fish の魅力的なインタラクティブ機能をフル活用し、コマンドライン作業の生産性を向上させることができました。次回は、Fish のスクリプト機能を用いた自動化や、外部プラグイン(fisher 等)による機能拡張について深掘りする予定です。

参考資料