環境構築:ユーザフレンドリーで補完機能の強力なfishへ移行(Login shellをbashからfishへ移行)

前書き

本記事では、CLI(Terminal)で用いるinteractive shellをfish(friendly interactive shell)に移行する方法を記載します。fishは、Debian環境のdefault shellであるdash(POSIX互換のash拡張)やlogin shellであるbashよりも優れた点が多いです。

fishの優れた点
  • 強力なサジェスト(予測変換)・補完機能
  • Tabキーを押すと、入力中コマンドの機能説明を表示(下画像)
  • Terminalのカラースキーム設定が容易
  • Webインターフェースでも設定変更が可能
  • パッケージマネージャ(fisher)で機能拡張が可能
  • デフォルト設定で使いやすい

上表で示した内容以外にも、他の高機能shell(zshなど)よりも学習コストが低い、Vimのkey bindingが使用可能など、細かい点で利点があります。ただし、唯一のデメリットとして、「fishはPOSIX互換でない事(Default shellに向かない事)」が挙げられます。

本記事では、POSIX非互換というデメリットに配慮しつつ、Login shellをbashからfishへ移行する手順を示します。

                                                        

検証環境

Debian9(stretch)環境を使用します。Default shellはdash、Login shellはbashという環境です。

                                                       

fishとfisherのインストール

まずは、fish(shell)とfisher(fishプラグインマネージャ)をインストールします。Debian9(stretch)以降であれば、aptでfishを取得可能です。fisherは、公式サイトのインストール手順で取得します。

                                           

Login shellのみをfishに変更

「前書き」で記載したとおり、fishはPOSIX互換性がありません。そのため、Default shell をfishに変更した場合(/bin/shのシンボリックリンクが/usr/bin/fishの状態)、POSIX互換を前提としたshell scriptを読み込めず、何らかの動作異常を起こす可能性があります。

以上を踏まえると、「Default shellはdashのまま」とし、「Login shellのみをfish」に変更します。なお、.bashrcに”exec fish”を記載し、Login shellはbashのままfishを起動する方法があります。しかし、この方法ではexportした環境変数設定が弾き継がれません。そのため、Login shell自体をfishに変更する方法を採用しました。

fishは、.bashrc(bash用の設定ファイル)に記載された設定を読み込みません。そのため、.bashrcに記載されている設定を”~/.config/fish/config.fish”に移行します。この際、.bashrcとconfig.fishで環境変数設定(export)の書式が異なるため、注意が必要です。

まずは、Login Shellをbashからfishに変更します。

                                                                   

次に、.bashrcに記載したexportやalias設定を”~/.config/fish/config.fish”に移行します。特に、自分で設定していない場合は、以下の手順は不要です。

                              

お前を消す方法:Welcome to fish, the friendly interactive shell

上記の手順の後にTerminalを再起動すると分かりますが、fish起動後に

と、毎回Welcomeメッセージが出ます。そのため、”~/.config/fish/config.fish”に”set fish_greeting”を追記し、メッセージの出力を抑制します。

                                   

                              

Terminalのカラースキームを変更

FishはTerminalのカラースキームが複数用意されています。最も簡単にカラースキームを設定する方法は、後述するWebブラウザを用いる方法です。

この節では、oh-my-fish(GitHub、サンプル画像つき)とfisherを用いて、自分好みのカラースキームを設定する方法を示します。

今回の例で使用したbobthefishは、別途カラースキーム一覧があります。好きなカラースキームを探して、”~/.config/fish/config.fish”に”set theme_color_scheme (カラースキーム名)”を追記すれば、反映されます。カラースキームの色合いをテストする場合は、”__bobthefish_display_colors”で確認できます(下画像)。

                   

便利pluginのインストール

「最近使用したディレクトリにジャンプできるz plugin」および「あいまい検索ができるfzf plugin」のみをインストールします。

                              

他に設定を変更する場合:Webブラウザで設定

fishは、設定をWebブラウザ経由で変更することが出来ます。Terminalで”fish_config”と入力し、実行すれば以下の画面が開かれます。後は、ユーザの好みで設定を適宜変更して下さい。

おすすめ

1件の返信