青ポスの部屋

旅と技術とポエムのブログ

【win10】bash on windowsが強くなっていた

先日アップロードした記事の続き。
bluepost69-tech.hatenablog.com

これまでと困ってること

これまでcygwin上でemacsをインラインで使ってきたけど、win10だとその方法が取れないということだった。WSL*1とかMSYSとか試したけどどれもインラインでemacsが使えなくて、結局コマンドラインからatomを起動したというオチだった。

そもそも別窓でエディタが開くのは嫌

cygwinでもemacsを一応は使うことはできる。ただしGUIでしか使えず、別窓で開く。別窓で開くと視線をターミナルから移さないといけないのでめんどうくさい。ターミナル上で開きたい。

Atomは重い

Atomを起動する方法は別窓で開くという問題を解決できていないうえ、Atomは起動までが重い。数秒かかることもある。

vimは嫌

emacs信者なので。

ターミナルを使いたい

シェルが使えるIDEを使うという手もある。しかしIDESSHでは実行できない*2ので、SSHとローカルでやり方を変える必要がある。個人的に同じ言語では同じ手法を使いたい。

一瞬Powershellに落ち着いた

cygwinやらMSYSやらいろいろ試行錯誤したが、一旦はPowershellを使っていた。

しかしPowershellbashではないので、文法の違いがなかなか不便だった。rmやcpのような基本的なコマンドはエイリアスが差さっているので困らないが、たとえば

  1. for文が使えない
  2. rmのオプションが使えない(「-vrf」をいちいち「-v -r -force」と打たなければならない)
  3. NTemacsは日本語が使えない

といった不満があった。

久しぶりにbashを触ったらはまった

そこで、しばらく寝かせていたWSLを久しぶりに触ってみた。

すると、アップデートのおかげか、文字欠けは起こらなくなっていた。これはよい。

それに、cygwinのcygstart的なこともできる方法を発見した。Powershellではカレントディレクトリをエクスプローラで開くには

explorer .

でできるが、以前のbashでは方法が見つからなかった。ところが、今のWSLはexeファイルに対応したらしく、

explorer.exe .

で同様のことができる。しかもbashなのでbashのやり方でエイリアスを差しておけばよい。

当然EmacsCUIで開けるし、SSHだってできる。やっぱりbashはよい。

2017.10.19 追記
WSLはBoW(Bash on Windows)などいろんな呼び方があり一定していなかったが、公式にはWSLにしてほしいとのことだったので、表記を統一した。

*1:Windows Subsystem for Linux

*2:僕が知らないだけかもしれない