@ledsun blog

無味の味は佳境に入らざればすなわち知れず

WSLにfish shellをいれる

WSLのデフォルトのShellはBashです。 Bashだと履歴検索などが不便なので、Macで使っていたfish shellをインストールします。

fish shell - 3.x release series : “Fish shell maintainers” team

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish

デフォルトシェルをfishに変更

WSLでお手軽にオシャレfish環境構築 - Qiita

fishをdefault shellへ設定

$ chsh
Password:
Changing the login shell for sugi
Enter the new value, or press ENTER for the default
      Login Shell [/bin/bash]: /usr/bin/fish

これだけだと、Windows Terminalを起動したときのシェルが変わらないことがあります。

コマンドラインと開始ディレクトリと設定

Bashのホームディレクトリを変更するときにコマンドラインを設定をしました。

f:id:ledsun:20211108194616p:plain
Bash用の設定

これの影響でBashが起動します。 コマンドラインwsl.exeに戻します。

Windows Terminal の Ubuntu の開始ディレクトリをホームディレクトリにする | MSeeeeN | 大阪発 IT メディア by MSEN を参考にして、ホームディレクトリをWSLのホームディレクトリに設定します。

ledsun@MSI /m/c/U/led_l> cd
ledsun@MSI ~> wslpath -w .
\\wsl$\Ubuntu\home\ledsun

f:id:ledsun:20211108194458p:plain
コマンドラインと開始ディレクトリの設定

設定ファイルの同期

すっかり忘れていました。GitHub - ledsun/dotfiles: my dotfiles に設定ファイルがあるんでした。 ~/.config/fish/config.fishだけバックアップしていたので、 これを機に~/.config/fish/をまるごとバックアップすることにしました。

プロンプトの設定

プロンプトの設定に汎用性がなくエラーが出たのでこれを機に変更します。

fishのプロンプトの右側をカスタマイズして、gitのブランチとstatusを表示させる - Qiita を参考にfish_configコマンドをつかって良さそうなプロンプトを選びます。

f:id:ledsun:20211108200224p:plain
fish shellのプロンプトを設定

こんな感じにしてみました。 ただ、うんこちゃんマークを表示するとiTermで表示が崩れました。 そのうち修正しようと思います。

rbenv

rbenvを有効にします。 .config/fish/config.fishに次の設定を書きます。

set PATH $HOME/.rbenv/bin/ $PATH
status --is-interactive; and source (rbenv init -|psub)

パスの設定はユニバーサルに設定した方がfish shellらしくて良いと思います。 RubyMineのターミナルが壊れた話 - @ledsun blogで、ユニバーサルがあまり上手く効かなかった記憶があるので、.config/fish/config.fishで設定しています。

最初から入れる場合は Install/Use rbenv (Ruby) on Windows 10 Linux WSL(2) | by Hervé Leclerc | alter way | Medium を参考にして、次の感じになると思います。

# sudo apt-get update
# sudo apt-get install -y \
build-essential \
git \
libreadline-dev \
libssl-dev \
zlib1g-dev
# git clone https://github.com/rbenv/rbenv.git ~/.rbenv
# git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# git clone https://github.com/rkh/rbenv-whatis.git ~/.rbenv/plugins/rbenv-whatis
# git clone https://github.com/rkh/rbenv-use.git ~/.rbenv/plugins/rbenv-use
# cd ~/.rbenv && src/configure && make -C src

nvm

nvmは完全に入れ直す必要があるようです。

まず、GitHub - jorgebucaran/fisher: A plugin manager for Fish. をいれます。

ledsun@MSI:~[127]►curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
fisher install version 4.3.0
Fetching https://codeload.github.com/jorgebucaran/fisher/tar.gz/HEAD
Installing jorgebucaran/fisher
           /home/ledsun/.config/fish/functions/fisher.fish
           /home/ledsun/.config/fish/completions/fisher.fish
Installed 1 plugin/s

次に、GitHub - jorgebucaran/nvm.fish: Node.js version manager lovingly made for Fish. をいれます。

ledsun@MSI:~►fisher install jorgebucaran/nvm.fish
fisher install version 4.3.0
Fetching https://codeload.github.com/jorgebucaran/nvm.fish/tar.gz/HEAD
Installing jorgebucaran/nvm.fish
           /home/ledsun/.config/fish/functions/_nvm_index_update.fish
           /home/ledsun/.config/fish/functions/_nvm_list.fish
           /home/ledsun/.config/fish/functions/_nvm_version_activate.fish
           /home/ledsun/.config/fish/functions/_nvm_version_deactivate.fish
           /home/ledsun/.config/fish/functions/nvm.fish
           /home/ledsun/.config/fish/conf.d/nvm.fish
           /home/ledsun/.config/fish/completions/nvm.fish
Downloading the Node distribution index...
Installed 1 plugin/s
ledsun@MSI:~/nature-server[1]►nvm install 17
Installing Node v17.0.1 latest
Fetching https://nodejs.org/dist/v17.0.1/node-v17.0.1-linux-x64.tar.gz
Now using Node v17.0.1 (npm 8.1.0) ~/.local/share/nvm/v17.0.1/bin/node
ledsun@MSI:~/nature-server►node -v
v17.0.1

つかえます。

参考