Bash on Ubuntu on Windowsで日本語ターミナル環境を快適に使う2

OpenSSHのsshdが起動しないって書いたのですが、どうやら私の環境がダメなだけかもしれません。
下記のリンク先で自動起動も含め、sshdの使用法が紹介されていますので参考にしてみてください。
Bash on Ubuntu on Windows で SSH を利用する
私もやってみましたが何故か上手くいかなかったので、前回までの設定を行った上でとりあえず安直にスタートアップにbash.exeを登録しました。

Windowsのプログラムも実行したい

さて、今までWindows上のCygwin環境でやっていた事の殆どをBash on Windowsに置き換えて作業できる様になって来たので、後はターミナルからWindowsのプログラムを実行出来れば完全に移行できそうな気がします。まぁ、普通はそんなに必要無いんでしょうが、私の場合w3mから外部ブラウザを開く操作を頻繁にしますし、CUIのファイラからエクセルとかを起動するなんて事もあるので結構必須な機能なんです。
Cygwinの場合だと /cygdrive/c を起点としてフルパスで指定すれば難なく設定出来ますが、Bash on Windowsではそう簡単にはいかないので、一般的なLinux上からネットワーク経由でWindowsのコマンドを実行するのと同じ手段で実現する形になります。ちょっと調べてみたらWindows用のRSHデーモンや"winexe"というツールを使用する方法が見つかりましたが、どちらも上手く行きませんでした(winexecはCUIコマンドならOK、GUIを起動するオプションは最近のWindowsでは効かないみたい)。
なので今回はandLinux向けの下記サイトの情報を参考にdRubyを使用して実現したいと思います。
andLinuxからWindowsコマンドの呼び出し

Windows側の設定

まずはWindowsRubyをインストールします。私は今回はUSB Rumix 2っていうインストーラ無しでコンパクトにRuby環境を整えるパッケージを使用しましたが、RubyInstallerや参考サイトの様なCygwinRuby等、なんでもイケると思います。
準備出来たら下記の内容でwinexec-executer.rbというファイルを作って適当な場所に保存し、起動しておきましょう。


#!/usr/bin/ruby
require 'drb/drb'
require 'open3'
DRb.start_service('druby://127.0.0.1:12346', Open3)
sleep

Bash on Windows側の設定

こちらにも普通にapt-getでRubyをインストールしたら、下記内容でwinexec-teller.rbを作成します。


#!/usr/bin/ruby
require 'drb/drb'
DRbObject.new_with_uri("druby://127.0.0.1:12346").popen3(ARGV[0])
これを/usr/local/bin等パスが通った場所に保存し実行権限を与えて置きます。

Windowsプログラムの実行

ここまで出来たら、後はBash on Windowsのターミナルから、


winexec-teller.rb notepad
って打つだけでメモ帳が起動します。
w3mの外部ブラウザをWindowsの標準ブラウザにするなら、Bash on Windows上の$HOME/.w3m/configに

extbrowser winexec-teller.rb "start %s"
と追記すればOKです。
うんうん、なかなか快適です♪