bash から fish shell に移行

macOS Catalina で、標準のシェルが bash から zsh に変わりました。
そのついでで、fish shellに移行したので書き残します。

環境

  • macOS Mojave -> Catalina 10.15.4 にした

導入

fishを入れる。

shell
brew install fish

ついでにfish のパッケージマネージャー fisherもいれる。
https://github.com/jorgebucaran/fisher

shell
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

移行

環境変数, alias, function

.config/fish/config.fish を作成し、そこに移植する。

fish は export をset -x形式で指定する。
以下のような環境変数があるとして…。

$HOME/.bash_profile
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export FOO=bar

fish ではこうなる。

$HOME/.config/fish/config.fish
set -x ANDROID_HOME $HOME/Library/Android/sdk
set -x PATH $PATH $ANDROID_HOME/emulator
set -x FOO bar

alias はそのままでいけた。

rbenv

eval するやつは使えないので以下

$HOME/.config/fish/config.fish
status --is-interactive; and source (rbenv init -|psub)

nvm

もともと fish をサポートしていないので、とりあえずfish-nvmを入れた。

shell
fisher add jorgebucaran/fish-nvm
nvm use lts
node -v > .nvmrc

yarn はそのまま。

デフォルトシェル

デフォルトシェルは、Catalina 標準の zsh のままにしておく。
.zshrcをいじって…。

$HOME/.zshrc
exec fish

chsh で zsh をデフォルトにした。

shell
chsh -s /bin/zsh

VSCode でも、既定ターミナルをzshを変更すれば fish が起動する。

カスタマイズ

テーマ

Oh My Fish(OMF) にあるテーマがインストールできる。
fisher の場合はインストール方法が異なる。
例えばbobthefishテーマをインストールする場合、OMF だと

shell
omf install bobthefish

fisher の場合はoh-my-fish/theme-テーマ名の形式で指定する。

shell
fisher add oh-my-fish/theme-bobthefish

Color Scheme, Prompt

fish_config を入力。

shell
fish_config

設定画面が立ち上がるので設定。

プラグイン

Awesome fish

ls の色

ls の結果が真っ青なのでつらい。
ls の結果に色をつける - ねもぷらす を参考に

$HOME/.config/fish/config.fish
set -x LSCOLORS gxfxcxdxbxegedabagacad

で色を変更する。

fish のロゴ

fish_logo をインストールする。

shell
fisher add laughedelic/fish_logo
fish_logo f00 '' ff0

アスキーアートでできたfishのロゴ