WSL でインストールした Ubuntu の環境を整える際、シェルをそれまでの zsh から fish へと変更することにした。
fish shell今風のコマンドラインシェルでカスタマイズ性も高いが、それまでの bash や zsh などと比べると設定ファイルの書き方や操作方法が異なるなど覚えなければいけないことは多い。が、せっかくなので新しいものを使っていこうと思う。
fish のインストール
Ubuntu なのでインストールは apt から行う。
$ sudo apt-get install fish
これで fish を実行するとシェルが fish に切り替わる。
oh-my-fish をインストールする
設定を自分でするの結構面倒くさいので良い感じにしてくれる oh-my-fish を導入する。
$ curl -L https://get.oh-my.fish | fish
これで良し。
oh-my-fish のテーマを適用する
oh-my-fish には多数のテーマが用意されており、自由に選ぶことができる。自分で一からカスタマイズするのは大変なのでありがたい。
テーマの一覧は oh-my-fish のリポジトリにある以下のページから確認できる。
oh-my-fish/Themes.md at master · oh-my-fish/oh-my-fish · GitHubテーマのインストールは以下のように行う。
$ omf install THEME_NAME
インストールすると自動的に適用される。見た目が変わるのでわかりやすいと思う。
oh-my-fish でエラーが発生したら omf doctor コマンドを利用する
omf コマンドでテーマを default へ戻そうとしたら以下のエラーが発生した。
⋊> ~ omf theme default
Conflicting prompt setting.
Run omf doctor and fix issues before continuing.
Theme not installed!
Install it using omf install default
default テーマがインストールされてないよ、と言われてしまった。もう一回インストールしようと omf install default を実行すると「既にインストール済み」と返された。
oh-my-fish 利用中に何かしらのエラーが出た場合にはエラーメッセージにあるように omf doctor コマンドを利用すると良いらしい。試しに利用してみると以下のようになった。
⋊> ~ omf doctor
Oh My Fish version: 6
OS type: Linux
Fish version: fish, version 2.7.1
Git version: git version 2.17.1
Git core.autocrlf: no
Warning: fish_prompt.fish is overridden.
fish_config command persists the prompt to ~/.config/fish/functions/fish_prompt.fish
That file takes precedence over Oh My Fish's themes. Remove the file to fix it:
rm ~/.config/fish/functions/fish_prompt.fish
If everything you use Oh My Fish for is working fine, please don't worry and just ignore the warnings. Thanks!
Warning にあるように fish_prompt.fish ファイルを削除する。
⋊> ~ rm ~/.config/fish/functions/fish_prompt.fish
これで再度 omf theme default を実行すると正常にデフォルトのテーマへ戻った。
今は omf より fisherman が良いらしい
oh-my-fish を調べているときに似たようなもので fisherman というものがあるのを知った。
GitHub - jorgebucaran/fisher: The plugin manager for fish-shellこっちもそのうち試してみる予定。
wsl-terminal で起動する際に fish を指定する
自分が WSL を利用する際に利用しているターミナルソフトウェア wsl-terminal はデフォルトでは bash を起動するので fish へ変更する。変更方法は大きく分けて二種類ある。
一つは wsl-terminal 実行時に生成されるショートカットのリンク先を編集する方法。リンク先は以下のような感じになっているので、SHELL の部分を fish のパスに変更する。
C:\apps\wsl-terminal\bin\mintty.exe --wsl --rootfs=// --configdir "C:\apps\wsl-terminal\etc" -i "C:\apps\wsl-terminal\open-wsl.exe" -o AppID=wsl-terminal -t " " -e /bin/wslbridge -e SHELL="/usr/bin/fish" -e LANG -t /usr/bin/fish
もうひとつは wsl-terminal のあるディレクトリ内の etc/wsl-terminal.conf を編集する。このファイルを開くと以下のように shell を指定している部分があるので fish のパスに変更する。
[config]
title=" "
;shell=/bin/bash
;shell=/bin/bash --login
;shell=/bin/zsh
shell=/usr/bin/fish
これでも良い。