fishは強力なコマンド補完機能を持っており、その処理は複雑です。コマンドの途中でも補完しようとして、全てのPATHにあるコマンドを確認するところでエラーになっていると思われます。考えられる原因は二つです。
- 環境変数PATHが壊れている。(アクセスできない場所やおかしな値がPATHにある)
- スペースや()等の記号が含まれている環境変数PATHにfishが対応していない。
いずれも、WindowsのPATHをBoW(Bash on Ubuntu on Windows)側で引き継いでいるため、Linuxライクでは無いPATHが含まれているからだと思われます。
解決方法は三つです。
###PATHの内容を見直す。
アクセスできないなど、おかしなPATHがあれば修正して下さい。これでなおれば十分かも知れません。
###WidowsのPATHを引き継がない。
下記レジストリを設定するとWindowsでのPATHをBoWでは引き継ぎません。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss]
"AppendNtPath"=dword:00000000
ただ、BoW上でもWindowsコマンドを使いたいと言う場合はできなくなってしまいますので、設定するかどうかは一長一短です。(私は、変にWindows側の見に行かないように設定していますが)
【追記】
ストアで配付されている正式版では仕様が変わったため上記方法ではうまくいきません。それらについてまとめたものをQiitaに書きましたので、正式版を利用している場合は下記を参考にしてください。
WSLでWindowsのPATHを引き継がないようにする方法 - Qiita
###細かい原因を調べてfish側に修正依頼を投げる。
WindowsのPATHにはどうしてもスペースや()等が含まれます。それらがあっても問題ないようにfish側に修正を依頼します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/23 23:22
2017/10/24 09:51
2017/10/24 12:03