Skip to main content

WSL + Explorer: the secret Terminal

Warning 

Please note that while you should read this blog post as a "joke", which hopefully will make you smile, all the commands are technically correct and should work for you too. With that being said, let the show begin. 

Introduction 

During the //BUILD 2018 conference, the session with Sarah and Tara showed how far WSL has come and, lucky for us, we can now see the replay or if you prefer reading, Tara has your back with a great recap
at the very end of their presentation, there is small but (very) impactful demo: the Windows Explorer context menu now has "Open Linux shell here":

Look at the past, you will see the future

Unfortunately I don't remember who showed this first (I do apologize), but there's a neet trick with Windows Explorer: if you type "cmd.exe" in the address bar, it will open a command prompt in the current directory.
So, with a little thinking and knowing that the shell is different from the Terminal application, then I tried it with a WSL distro: ubuntu1804.exe
Well, while it opens WSL Ubuntu, the path is set to $HOME ... not exactly what I wanted.
Then, I tried with WSL.exe directly: BINGO! that worked just fine.

Secret of the release notes

ok, it works great with the default WSL distro, but what if you want a different distro? Open the distro (i.e. Debian.exe) and then CD to the directory manually?
Well, the great minds at Microsoft brought us two little options with WSL that changed the rules of the game: --distribution and --exec

One WSL.exe to rule them all

before we can use the new options, we first need to know how the WSL distros are literally named.
For that, we have the (now) good ol' WSLConfig.exe command:
Now that we know the names, let's a try at the --distribution option and compare it to wsl.exe without options:

But the title mentions Explorer as a Terminal

and that's the last part of this blog post. As you might have read above, there's actually another option that will "invoke a single binary without a shell".
Let's try it out by renaming a file with WSL.exe and then rename it again with another distro (just for fun):
While this is a simple example, it already shows that the commands are executed successfully and the full path wasn't necessary as the invoked "binary" has the current path in its context.


BONUS: bring a Cloud-y taste to it

ultimately I managed to make something that might interest some Azure fans, MVPs or even (let's dream big here) Advocates:
And here is the script (please be kind, do not share with Jess "you know who" 😅):
A last easter egg is in the script itself: I'm using wslpath to ensure the path is in "Linux format".

Hope this will bring a smile at least.


>>> Nunix Out <<<

Comments

Post a Comment

Popular posts from this blog

Scripting with GO: what about Windows?

!!! Warning !!!Once again, let me repeat, I'm by no means a developer nor a sysadmin (at least no more since 5 years).
This means that, while the solution below worked for me and I could reproduce it, it's not 100% safe neither!
Also, my solution still feels incomplete (read further), so if someone know the tweak to make it even more compete, please share it and reach out in Twitter, I'll be waiting.
IntroductionBy now, everyone following @jessfraz read her take about the very neat "little hack" from @cloudflareUsing Go as a scripting language in Linux

As a good WSL Corsair, I tried it and it just worked!
But then, based on my latest playground of having a seamless coding experience between WSL and Windows (thanks @bketelsen for the love and notification spam), I really thought it would be unfair to "my Windows side" to not be able enjoying the fun of GO scripting (yes, split personality is bad).

So as the good Corsair I am, it was time to see if some shinn…

Docker + WSL: Get 2 daemon for the price of 1

Introductionalmost two years ago, Docker announced the capability of switching between the Linux and Windows containers "mode" (far from the right click that we have today).
At that time, I wrote a blog post on how to run both daemons at the same time (http://darthnunix.blogspot.ch/2016/10/docker-for-windows-2-daemons-enter-in.html)

Fast forward to 2018, and while we were blogging on how to get the TLS connection from WSL docker client with Rory McCune (https://raesene.github.io/blog/2018/03/29/WSL-And-Docker/), another blog post, by Stefan Stranger drew my attention (read: blew my mind) as I was trying to reproduce the same: how could I "bind" the docker socket in WSL with the Docker for Windows Linux mode socket (https://blogs.technet.microsoft.com/stefan_stranger/2018/04/02/access-my-docker-for-windows-kubernetes-cluster-from-debian-wsl/)
From 1 to 2 daemon: DemonHunter mode achievedNow that we have all the required setup resources, let's bind them together. An…

WSL: One Home to host them all

IntroductionThis blog post will explain how a single home mount can be shared accross all the WSL instances. It was quite fun to find the idea and then make it happen. It will use all the tools currently available from WSL, so please don't expect a "Linux only" as Interopability will be heavily used. And before I start, here is my point of view about WSL: It's not only Linux!
It's different, just like GNU is different from Unix (yes I said it).We have finally the strength of both worlds combined. And while I do understand the "dev" aspect is meant to be reproducible in a Linux prod environment, the "ops" side is meant to take advantages of everything that can make the full environment feeling Home. Setup requirementsIn order to really enjoy this solution, I do recommend having 2 or more WSL distros installed or, if you fell like a real WSLCorsair, try @bketelsencrazy setup (I love it)!
While the distros are downloading, let's prepare the Windo…