サイトアイコン Lonely Mobiler

WSL Ubuntu 18.04 のシェルを fish に変更したので設定とか

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

これでも良い。

Sponsored Link
モバイルバージョンを終了