環境構築:ユーザフレンドリーで補完機能の強力なfishへ移行(Login shellをbashからfishへ移行)
前書き
本記事では、CLI(Terminal)で用いるinteractive shellをfish(friendly interactive shell)に移行する方法を記載します。fishは、Debian環境のdefault shellであるdash(POSIX互換のash拡張)やlogin shellであるbashよりも優れた点が多いです。
- 強力なサジェスト(予測変換)・補完機能
- 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”と入力し、実行すれば以下の画面が開かれます。後は、ユーザの好みで設定を適宜変更して下さい。
ロシア人と国際結婚した地方エンジニア。
小学〜大学院、就職の全てが新潟。
大学の専攻は福祉工学だったのに、エンジニアとして就職。新卒入社した会社ではOS開発や半導体露光装置ソフトを開発。現在はサーバーサイドエンジニアとして修行中。HR/HM(メタル)とロシア妻が好き。サイトに関するお問い合わせやTwitterフォローは、お気軽にどうぞ。
1件の返信
[…] […]