Bash on Windowsでfzfのファイル探索が失敗する

結論

環境変数でfindから-fstypeを抜いたコマンドを実行するよう指定してやればよい。

問題点

最近主にBash on Windowsで開発しているのだが、たまに動作が怪しいツールがある。
fzfもそんなツールの一つで、インストールした状態ではファイル探索コマンドが動作しない。

解決法

fzfがファイル探索時に実行するfindコマンドにBoWでは対応していない(のではないかと思われる)-fstypeオプションが含まれているのが原因のようだ。

幸い、fzfの実行するコマンドは環境変数から与えられる。
~/.fzf/shell/key-bindings.*(シェル別)にFZF_CTRL_T_COMMAND, FZF_ALT_C_COMMANDが定義されているので、そこから-fstypeを抜いたものを.bashrcなどで指定する。

export FZF_DEFAULT_COMMAND="command find -L . -mindepth 1 \\( -path '*/\\.*' \\) -prune \
    -o -type f -print \
    -o -type d -print \
    -o -type l -print 2> /dev/null | cut -b3-"
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND="command find -L . -mindepth 1 \\( -path '*/\\.*' \\) -prune \
    -o -type d -print 2> /dev/null | cut -b3-"

もちろんhwなどの外部サーチコマンドを導入して、findの代わりにそれを使うようにしてもよい。