WSL2でrustup docしたらWindowsのChromeが開くようにした

WSL2でディストリビューションDebian。 rustup docしてドキュメント(documentation)を読みたいがエラーメッセージが表示されるだけ。

ドキュメントをブラウザで開く

  • rustup docでは openerによって環境変数BROWSERに設定されたコマンドがHTMLファイルパスを引数にして呼ばれる
  • explorer.exeにHTMLファイルのパスを渡せばChromeで表示される
  • rustup docから渡されるファイルパスはWSL内部でのパスなので、wslpathコマンドでWindowsパスに変換する
rustup doc

rustup docはローカルのHTMLファイルをWebブラウザーで開こうとする。 rustup docはopenerを使ってHTMLファイルを開く。

openerは渡されたファイルパスまたはURLを環境に合せた方法で開く。 openerはシステムのxdg-open、なければopenerが内部で持つxdg-openスクリプトを呼ぶ。 xdg-openは環境変数BROWSERでWebブラウザーを起動するコマンドを指定できる。

HTMLファイルを開く

WindowsエクスプローラーでHTMLファイルをダブルクリックするとChromeで開くようになってた。 たぶん既定のウェブブラウザが開くように設定されてるから。 WSLからHTMLファイルパスを引数にexplorer.exeを呼べばWindowsのデスクトップ側でHTMLファイルが読み込またChromeが表示される。 ただし、explorer.exeにはWindowsのパスを渡す必要がある。

やったこと

#!/bin/sh

/mnt/c/Windows/explorer.exe $(wslpath -w "$@")

exit 0
  • export BROWSER=open-rustup-doc
その他
  • wslpath -w にURLを渡すとエラーになるので、URLを「開く」に対応するには引数が「"https://"や"http://"で始まったら」などの分岐が必要になる
  • rustup docを呼んだ場合のHTMLファイルのパスは ~/.rustup/toolchains/<toolchain name>/share/doc/rust/html/index.html
  • rustup doc --path はHTMLファイルのパスを表示できる
  • Google Cloud Shellでは、BROWSER=echoだった
  • xdg-openではスペースが含まれた環境変数BROWSERの値に対応していない
  • インストールしたままの~/.profileには、~/binディレクトリがあればPATHに含めるように書かれている