一発起動WSL!


こんにちは。すずともです。
僕は授業などでWSLを使う機会があるのですが、先生の説明聞いてると

「ファイルに直接アクセスするにはエクスプローラのアドレスバーに\\wsl$って打つとアクセスできるよー」

ってよく言われます。
確かにそれでもできる(というかそれが正式なアクセス方法)なのですが、ファイルを整理するときに、Windows内にあったりOneDriveにあったりWSL内にあったりごちゃごちゃでめんどくさいと思いませんか?

一発起動WSL!

$ wsl

ホントにこれだけ。PowerShellなどでこれをすると、カレントディレクトリをマウントした状態でwslが起動してくれます。

PS C:\Users\Kamek> wsl
kamekyame@TOMO-NOTE:/mnt/c/Users/Kamek$ apt list | grep python2

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

games-python2-dev/focal 2.2ubuntu3 all
idle-python2.7/focal-updates,focal-security 2.7.18-1~20.04.1 all
libpython2-dbg/focal 2.7.17-2ubuntu4 amd64
libpython2-dev/focal 2.7.17-2ubuntu4 amd64
libpython2-stdlib/focal 2.7.17-2ubuntu4 amd64
libpython2.7-dbg/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
libpython2.7-dev/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
libpython2.7-minimal/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
libpython2.7-stdlib/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
libpython2.7-testsuite/focal-updates,focal-security 2.7.18-1~20.04.1 all
libpython2.7/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
python-dev-is-python2/focal 2.7.17-4 all
python-is-python2/focal 2.7.17-4 all
python2-dbg/focal 2.7.17-2ubuntu4 amd64
python2-dev/focal 2.7.17-2ubuntu4 amd64
python2-doc/focal 2.7.17-2ubuntu4 all
python2-minimal/focal 2.7.17-2ubuntu4 amd64
python2.7-dbg/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
python2.7-dev/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
python2.7-doc/focal-updates,focal-security 2.7.18-1~20.04.1 all
python2.7-examples/focal-updates,focal-security 2.7.18-1~20.04.1 all
python2.7-minimal/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
python2.7/focal-updates,focal-security 2.7.18-1~20.04.1 amd64
python2/focal 2.7.17-2ubuntu4 amd64
kamekyame@TOMO-NOTE:/mnt/c/Users/Kamek$

こんな感じで、c/Users/Kamekをマウントして、aptコマンドも使えてますね!

恩恵を得られそうな人

  • ちょこっとLinuxの力を借りて実行してみたいなーっていう人(cコンパイル)
  • WindowsメインでCUIアプリ作ってるけどLinuxでも動くかサクッと確かめたい人

など…

便利になったこと

① vscodeでwslを利用しやすくなった!

恩恵を得られそうな人の2つ目に該当する人向けですね。一応Windows・Linux互換のCUIアプリケーション作ってるけど、ほんとに動くんだろうか。パス関係とか厄介だしなぁ。

ってときに、wsl
vscodeのターミナルからも利用できるので、わざわざwslを別画面で起動しなくたって、プロジェクトフォルダをwsl内にコピーしなくたって、今開いてるディレクトリをマウントしてくれるのでサクッとLinuxで実行できます!

② Windowsからファイルを扱いやすい!

①にちょっと被る点でもあるのですが、最初に書いた「エクスプローラのアドレスバーに\\wsl$って打つとアクセスできるよー」っていう手順が要らなくなります。なんてったってカレントディレクトリがマウントされるのですから。

ファイル移動やコピーなどコマンドでの操作が慣れてない人でもエクスプローラで行えばOK!

③ サーバにssh鍵を設定しやすい!

ssh鍵を作成するコマンドssh-keygenはWindows、Linux両方から使えます。
しかし、作成した鍵を簡単にサーバに転送して設定してくれるssh-copy-idというコマンドはLinuxからしか利用できません。

Windowsからサーバにssh鍵を設定しようとすると、
ftpソフトなどを使って鍵を送ってからサーバのターミナルで設定したりなんていう複雑な動作が必要です。

そんなときには一発起動WSLの出番!
下記のように一行コマンドでssh鍵の転送からauthorized_keysファイルの設定まで行ってくれます。

PS C:\Users\Kamek> wsl
kamekyame@TOMO-NOTE:/mnt/c/Users/Kamek$ ssh-copy-id -i ./.ssh/id_ed25519.pub  jetbot@nano-4gb-jp45
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "./.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
jetbot@nano-4gb-jp45's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'jetbot@nano-4gb-jp45'"
and check to make sure that only the key(s) you wanted were added.

kamekyame@TOMO-NOTE:/mnt/c/Users/Kamek$

最後に

何となくいけるのではないかと思って打ったwslコマンド。一回知ると便利すぎて開発もはかどります!

追記

初めは一発起動コマンドがbashとして記事を書いていましたが、wslが本来のコマンドらしいので書き換えました。

bashからwslにたどり着くまでの経緯を残しておきましょう笑


正直bashコマンドでWSLのbashシェルが起動する理由がいまいちわかってないのでだれか教えてください!!🙇

WSLコマンドリファレンスbashの本体であるbash.exe(C:\Windows\System32\bash.exe)について記載がありました!

また、コマンドリファレンスには

Windows Subsystem for Linux を操作するための過去のコマンドもあります。 これらの機能は、wsl.exe 内に含まれますが、引き続き使用できます。

と書いてあるとおり、wslコマンドでもいけました…
bash過去のコマンドらしいです。

PS C:\Users\Kamek> wsl
kamekyame@TOMO-NOTE:/mnt/c/Users/Kamek$