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/open-rustup-doc を置いた
- wslpathコマンド
- explorer.exeはエラーにならなくてもステータスコードが1なので、シェルスクリプトでは明示的に0で終了させる
- exit 0 を書かないとブラウザが3回開いて、コンソールにエラーが出力される
#!/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に含めるように書かれている