- What is the difference in their functions? Is one of them more compatible or something else? Why Microsoft bother developing these two which look identical?
- The file location. Files for the bash on Ubuntu on Windows are located in
C:\Users\<username>\AppData\Local\lxss
, but where are they for WSL? There is an answer which claims them to be atC:\Users\<username>\AppData\Local\Lxss\rootfs
, but I find it empty. - Is there an ".exe" for WSL? For bash on Ubuntu on Windows it is
"C:\Windows\sysnative\bash.exe"
. Is there something like this for WSL so I can use it in Visual Studio Code?
2 Answers
"Bash on Ubuntu on Windows" is based on Windows Subsystem for Linux. WSL is an implementation of Linux system calls on the Windows' NT kernel, which allows you to run Linux executables unmodified (like Wine does for Ubuntu). "Bash on Ubuntu on Windows" is just one application of WSL. Other Linux distros like openSUSE or Fedora are either available or will soon be available.
There are "exe"s for WSL. Originally there used to bash.exe
, then came wsl.exe
, and now there's ubuntu.exe
and openSUSE-42.exe
. Presumably fedora.exe
will appear soon. From the MSDN post Manage multiple Linux Distributions in WSL:
There are three ways to launch and run WSL:
wsl.exe
orbash.exe
wsl -c [command]
orbash -c [command]
[distro]
, i.e.,ubuntu
-- this is the same as launching the installed app from the Windows menu.In the first two cases, WSL must pick a distribution to run - a default distribution. If you don't explicitly set a default, it will be the first one installed.
Where the files for WSL are will depend on the distro, now that they are apps installed from the store:
Each distribution you install through the store is installed to that application's appdata directory. For example:
C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
-
3Which is one of the reasons Microsoft retired
Bash on Ubuntu on Windows
once they introduced multiple WSL distributions. The feature is officially called WSL which stands forWindows Subsystem for Linux
.Bash on Ubuntu on Windows
came from the ability to run (Linux) bash scripts within a Ubuntu kernel on Windows.– RamhoundOct 23, 2017 at 16:51 -
7The funny thing is that running
bash.exe
or (more precisely,C:\Windows\System32\bash.exe
), still "works", however it gives a different environment than[ubuntu|<distro>].exe
, which complicates things a lot. Frankly, I don't know whybash.exe
still exists or why it doesn't just route to the preferred distro. Edit: Usewslconfig
from cmd. Jul 3, 2018 at 19:40
Dug around to find this, hope this helps
From Microsoft
Available in Windows Build 17092 (version 1903) and prior
In Windows 10 prior to version 1903, the WSL Config (wslconfig.exe) command-line tool should be used to manage Linux distributions running on the Windows Subsystem for Linux (WSL). It lets you list available distributions, set a default distribution, and uninstall distributions.
To list distributions, use:
wslconfig /list
Lists available Linux distributions available to WSL. If a distribution is listed, it's installed and ready to use.
wslconfig /list /all
Lists all distributions, including ones that aren't currently usable. They may be in the process of installing, uninstalling, or are in a broken state.To set a default distribution that runs when you run wsl on a command line:
wslconfig /setdefault <DistributionName>
Sets the default distribution to .Example: (using PowerShell)
wslconfig /setdefault Ubuntu
would set my default distribution to Ubuntu. Now when I runwsl npm init
it will run in Ubuntu. If I run wsl it will open an Ubuntu session.To unregister and reinstall a distribution:
wslconfig /unregister <DistributionName>
Unregisters the distribution from WSL so it can be reinstalled or cleaned up.For example:
wslconfig /unregister Ubuntu
would remove Ubuntu from the distributions available in WSL. When I runwslconfig /list
it will not be listed.
Available in Windows Build 17093 and later
Configure per distro launch settings with
wslconf
Automatically configure certain functionality in WSL that will be applied every time you launch the subsystem using wsl.conf.
Right now, this includes automount options and network configuration.
wsl.conf is located in each Linux distribution in
/etc/wsl.conf
. If the file is not there, you can create it yourself. WSL will detect the existence of the file and will read its contents. If the file is missing or malformed (that is, improper markup formatting), WSL will continue to launch as normal.
-
2This is helpful but would you consider also adding points related to thr question 😅 ?– Pe DroAug 24, 2020 at 3:29