入門編:Fishの概要と特徴・環境構築
fish(Friendly Interactive Shell)の基本設計、従来のシェルとの設計思想の違い、初期状態で利用できる先進機能、および導入手順を解説します。
fish とは何か
fish は、「設定不要で最初から最高の体験を提供する(Works out of the box)」ことを目指して設計された、対話操作(インタラクティブ)重視のスマートなコマンドラインシェルです。
Bash や Zsh では、便利な補完やシンタックスハイライト、履歴検索を実現するために、膨大な設定ファイル(.zshrc 等)を書いたり、多数のプラグインを導入して管理する必要がありました。
fish は、現代のコマンドライン作業に求められる強力な機能を標準で内蔵しており、インストールした瞬間から一切の設定作業なしで高度な作業環境が手に入ります。
主要な標準機能
プラグインなしで既定で有効になっている代表的な機能です。
-
リアルタイム・シンタックスハイライト: 入力中のコマンドがシステムに存在するかどうかを即座に判定します。有効なコマンドは青や緑で表示され、存在しないコマンドや構文エラーは赤色で警告されます。
-
自動入力サジェスト(Autosuggestions): 過去のコマンド履歴やカレントディレクトリの状況から、次に入力したい内容を薄い文字色で自動予測します。右矢印キー(
→)またはCtrl + Fを押すだけで全文を確定入力できます。 -
24ビット True Color 対応: 鮮やかなターミナルテーマやカラーリングをネイティブでサポートしています。
-
ウェブベースの設定画面(
fish_config): ブラウザ上でテーマの切り替えやプロンプトの選択、関数の確認が直感的に行えます。
Bash / Zsh との設計思想の違い
多くの Unix シェルは、1970 年代の Bourne Shell や POSIX 標準との後方互換性を何よりも優先しています。そのため、歴史的経緯による不自然な文法(スペースの有無によるエラー、難解なクォーティング規則など)が残されています。
fish はあえて POSIX 互換性を捨て、直感的で学習しやすく、一貫性のあるクリーンな文法をゼロから再設計しました。
現代のエンジニアリングでは、「システム起動や自動化スクリプトは標準の Bash/sh で記述し、人間がターミナルで対話操作するシェルには fish を使う」という合理的な使い分けが広く支持されています。
インストールとデフォルトシェルの設定
各プラットフォームにおける導入手順です。
» macOS への導入
Homebrew を使用して簡単に導入できます。
brew install fish
» Linux への導入
主要なディストリビューションの公式パッケージマネージャーからインストールできます。
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y fish
# Fedora
sudo dnf install -y fish
# Arch Linux
sudo pacman -S fish
» 起動と既定シェルへの登録
ターミナルで fish と入力すると、即座に fish セッションが起動します。
ログイン時の既定シェルを fish に変更する場合は、以下の手順を実行します。
# /etc/shells に fish の実行パスが存在することを確認
command -v fish | sudo tee -a /etc/shells
# 既定シェルを fish に変更
chsh -s $(command -v fish)