16

When I type "bash" to the windows explorer address bar and hit Enter, it opens the shell in that directory. Often I find myself wanting to work on files with windows programs in the working directory I reached through shell. Is there an easy way to open explorer from the location reached through shell?

  • lets say I navigate in shell to /mnt/c/Users/adam/Dropbox/folder and I want to work in that directory, I would like to open explorer at that exact location – wesalius Jul 13 '18 at 21:24
16

To open the current directory in Explorer - use the following (WSL sets the Windows path by itself):

explorer.exe .

You can set alias with .bashrc for a custom command:

echo 'alias explorer="explorer.exe ."' >> ~/.bashrc
source ~/.bashrc

Now just use:

explorer 

to open the current working directory in Windows Explorer.

  • 3
    This opens explorer to C:\Windows\System32 folder. Am I missing something? – panta82 Mar 23 at 10:15
  • 2
    @panta82, if you run this comand inside linux emulated directory, explorer.exe can't interprete path to it, so it opens default location. But in future releases Microsoft team promises to integrate linux directories in to windows explorer, so it possible to start working then. – Sole Sensei Mar 26 at 13:35
  • it just opens system32 folder no matter where i open it from unless i'm in mnt/ then it opens correct counter part – Muhammad Umer May 15 at 1:18
  • @Umer, yes thats right, you can't open linux emulated directory, only mounted mnt/. But you can link to /mnt/c/any_win_path with symbol link: ln -s in linux home, then it works inside home. – Sole Sensei May 17 at 13:01
  • alias explorer='explorer.exe wslpath -w "$PWD"' – Ted Nov 21 at 1:28
8

Microsoft provides a binary wslpath for exactly this purpose.

explorer.exe `wslpath -w "$PWD"`

Cribbing from the github issue asking for usage info, there are 4 options - -a, -u, -w and -m.

wslpath usage:
    -a    force result to absolute path format
    -u    translate from a Windows path to a WSL path (default)
    -w    translate from a WSL path to a Windows path
    -m    translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

    EX: wslpath ‘c:\users’
  • is there opposote for wslpath? ex. to pass convert path from windows in wsl? – Psychozoic Feb 19 at 14:22
  • @Psychozoic that would be wslpath -u to convert from a windows path to a wsl path – laverya Jul 30 at 17:56
3

From a WSL shell prompt, run

explorer.exe "Windows path"

such as

explorer.exe L:

If L: maps to your desired directory (any unused drive letter may be used for this). You can map to network drives within Explorer, or to a local folder with SUBST.

Problem is, your /home/USERNAME/ folder in WSL appears to Windows something like C:\Users\YOURUSERNAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\tester . You could use SUBST to turn this into a drive letter a la SUBST L: C:\Users\YOURUSERNAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\tester then use a relative path from L: for your destination.

Let's say you have a WSL folder /home/YOURUSERNAME/acme/novelties . You could get close to there with explorer.exe L: but explorer.exe L:acme or explorer.exe acme\novelties will not bring you to where you wish to be, and instead will bring you to your Windows user Documents folder, instead.

2

I have created a little tool called eopen to open Explorer easily. https://github.com/ko1nksm/eopen

Usage: eopen [options] [file | directory | uri]

options:
  -e, --editor      Open the file in text editor ($EOPEN_EDITOR)
  -n, --new         Open the specified directory in new instance of explorer
      --sudo        Use sudo to write the unowned file
  -v, --version     Display the version
  -h, --help        You're looking at it

note:
  The file or the directory allows linux and windows path.
  (e.g. /etc/hosts, C:/Windows/System32/drivers/etc/hosts)

  The uri must start with protocol schema. (e.g http:, https:)

And here are another solution. https://github.com/4U6U57/wsl-open

1

For WSL2 you can access to home directory from windows like this :

\\wsl$

Sorry to be late at the party!

0

Taking the best of partial answers above from @sole-sensei and @laverya, add the following alias to your ~/.bash_aliases (or if for some strange reason you don't want/have a separate aliases file, ~/.bashrc):

 alias explorer='explorer.exe `wslpath -w "$PWD"`'

If you don't mind tagging it onto the end (I don't because I like to keep it clean and organized):

 echo 'alias explorer="explorer.exe ."' >> ~/.bash_aliases
 source ~/.bash_aliases

Now if we could just get the new Windows Terminal to support ctrl-C and ctrl-V (right-click?! Really Microsoft?!?) we'd be really set!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.