WSL起動時に次のエラーメッセージが表示されます。
source: Error encountered while sourcing file '/tmp/.psub.N1u4nIBokn': source: No such file or directory rm: cannot remove '/tmp/.psub.N1u4nIBokn': No such file or directory Welcome to fish, the friendly interactive shell Type help for instructions on how to use fish
rbenvを初期化するためのコマンドsource (rbenv init -|psub)
の実行に失敗しているためにでているエラーメッセージです。
この状態ではrubyコマンドが見つかりません。
ledsun@MSI:~►ruby 23:01 Command 'ruby' not found, but can be installed with: sudo snap install ruby # version 3.1.1, or sudo apt install ruby # version 1:2.7+1 See 'snap info ruby' for additional versions.
もう一度source (rbenv init -|psub)
すればrbenvは初期化されます。
rubyコマンドが使えるようになります。
ledsun@MSI:~[127]►source (rbenv init -|psub) 0.127s 23:01 ledsun@MSI:~►ruby
fish-shell同じエラーメッセージがでるissueがあります。
close済みです。 WSLに関する情報も載っていません。
psubは名前付きパイプの代わりに一時ファイルをつかうfish-shellの組み込みコマンドです。
わかった風に書いていますが、名前付きパイプがなにかはわかっていません。
やっていることは、次のようにrbenv init
コマンドで初期化スクリプトを出力します。
ledsun@MSI:~[1]►rbenv init - 23:16 set -gx PATH '/home/ledsun/.rbenv/shims' $PATH set -gx RBENV_SHELL fish command rbenv rehash 2>/dev/null function rbenv set command $argv[1] set -e argv[1] switch "$command" case rehash shell use rbenv "sh-$command" $argv|source case '*' command rbenv "$command" $argv end end
psubを使ってスクリプトを一時ファイルに書き込みます。 一時ファイルのパスを返します。
ledsun@MSI:~►echo (rbenv init -|psub) 23:17 /tmp/.psub.qMqt1fQTDG
これをsourceコマンドで読み込むだけなので、失敗しないはずです。 WSLの起動中だと一時ファイルへの書き込みに失敗するか、書いた一時ファイルが消えるかしているのでしょうか?
20220409追記
Windows 11にしたら起きなくなりました。 WSLのバージョンに依存していたようです。
20220501追記
また、起きるようになりました。