We've been amazed by the overwhelming outpouring of interest about this new feature over the last week. One of the most frequent questions we're asked is "When can I get my hands on Bash on Ubuntu on Windows?"

We've held-off giving a date until we were 100% sure it's available … but that date is NOW!

This build contains the first public release of Bash on Ubuntu on Windows and the underlying Windows Subsystem for Linux.

Installing Bash on Ubuntu on Windows

Important: To run Bash/WSL, you must be running a 64-bit version of Windows 10 on a 64-bit PC.If you do NOT see "Windows Subsystem for Linux" listed in the optional features, you are likely not running a 64-bit version of Windows 10, or are running a build of Windows 10 prior to #14316.

Once you're upgraded to this new build, you'll need to complete the installation steps summarized below:

I would say (s)he mean that more people (lower learning curve) are now tempted to take the step into the bash world and understand it’s benefits. Therefore, within time, people will make a statement that Windows to be superfluous. A completely false statement, no matter how you twist and turn it.

This is logically stupid answer even from POSIX Subsystem and W32 Subsystem, This feature is a “bridge” for that 2 very different world! This feature WILL strengthen those 2 world and someday, *NIX family will have “FULLY COMMERCIAL APPLICATIONS LIKE DEVELOPER ON WINDOWS DID” and thus, make OSS family collapse sometimes in the future (if this feature success)

Come on Open Source! Be interactive and creative! Don’t let everything must done with a fees!

Fees? What fees? This is a free update to Windows 10. Which you likely got as a free update to Windows 7/8.

There is no way that Microsoft adding the ability to run *NIX apps on Windows is going to cause the open-source world to collapse, nor would we want it to. You might have noticed that Microsoft has open-sourced a HUGE array of technology of late.

There are challenges with open-sourcing something like WSL that is built deeply into the Windows kernel and requires a complex build system and sophisticated signing and security infrastructure to even allow it to run.

Absolutely – the Windows 10 Anniversary Update is a free upgrade to a free OS release (Windows 10) which one can upgrade to for free from Windows 7 or 8 which most people receive “for free” (i.e. included in the price) when they bought their PC.

Windows 10 Anniversary Update is a free upgrade for existing Windows 10 users. If you want to get Windows 10 Anniversary Update for free, and you’re not already running Windows 10, now might be a good time to upgrade 🙂

On the contrary, it will encourage (some) Linux users to switch to Windows, because they know that they can now use it for most of their Linux work. Personally, I think that being able to game while I sync gigabytes of Android source code is exciting!

What is Microsoft’s direction for the /r/n file termination convention used by Windows? Since Linux uses the /n convention, will we have to dos2unix and unix2dos files before we can process files created on the other subsystem?

Still, it’d be great to see important parts of Windows itself, like notepad, support reading files with \n line endings. It’d also be nice to see the Visual Studio setting to write files with \n line endings not be so buried. Until that happens I think many people will continue to think of Windows as not really supporting \n line endings. But I’d love to see us move in the direction of standardizing on \n line endings for developers–because the world would be a better place if that arbitrary difference between Windows and Linux went away.

What is the advantage you see in using two characters for line termination? That’s a leftover from DEC operating systems and FORTRAN carriage control on printing terminals. What other meaning does Microsoft reserve for an unattended “newline” that makes it in any way desirable to require a carriage return as well?

I’m certainly not advocating for it, but there’s a historical reason it’s there and as with many things which are long-established, it’s hard to change. Even if we updated Notepad to handle \n only, there are millions of apps out there that will still expect CRLF.

IMO *nix has had it wrong from the beginning. CR positions the cursor at the beginning of the line and LF starts a new line. Formatting gets screwed up if both commands aren’t done. *nix infers a CR when an LF is encountered which is not always desirable.

Is the Source to this Feature available? The comment about bash returning ‘root’ after ‘whoami’ makes me think that this isn’t really bringing POSIX to Windows. Rather it’s doing what Hyper-V does under the covers. Is this really a Micro Ubuntu VM running on Windows using part of Windows Hyper-V? If so, then this isn’t as great as I thought it was.

There isn’t any reason why the NTFS file-system cannot support the Unix Permission model in addition to allowing the internal NTLM accounts to be used within Bash. It would be a great shame if we had to manage two separate accounts, one for windows and one for Bash on Ubuntu on Windows. I guess even the name answers my original question. This isn’t really Bash on Windows is it? (Sad Face)

I completely understand the power of virtualization and why bringing in the kernel of linux into Windows would be powerful. But if you’re going to do this go all the way. Don’t make it so that it’s a ‘layer’ on top of Windows. The moment we have to create a new ‘account’ inside of Bash, it’s all broken.

Bring over the Linux Filesystems. Bring over the Unix Permission model which will work just fine on a NTFS volume. And FAT32 volumes don’t have any real permissions anyways so everything is either User or Admin at that point.

Also, if you run Bash on Ubuntu on Windows AFTER the User situation is fixed and then perform a sudo command, will it only work if you ran Bash on Ubuntu on Windows as Administrator? If so then that means it ALWAYS has to be ran as Administrator, which in turn means that Micro VM has permission to do whatever it wants to the entire system thus defeating the purpose of the sudo command to begin with.

Integrate the linux user model into the nt user model and these issues no longer exist. NFS will work. PAM will work. The Windows NT kernel can support all of this.

What happens if a User launches a Windows native application from the Bash shell? Which permissions does it inherit? Can it even launch Windows Native applications? If it cannot then how is it better then Mingw32 or Cygwin?

I think quite a bit of these questions can be answered if we are able to see the source to this feature. This is an amazing feature and I will love it. It an be so much more though if we can bring the POSIX headers and compatible source over to Windows. Then we can have native applications for everything, including Bash instead of what I believe is a small Ubuntu VM running on Windows 10.

Also, does this Feature require/enforce Hyper-V to be enabled? If so then it will destroy the use of Virtual Box and Docker.

No, the source is not available. Most of the interesting stuff is deep in the Windows Kernel and is very Windows kernel specific.

No, this has nothing to do with Hyper-V and does not employ VM’s. Read and watch the above posts/videos for deeper technical understanding.

Many *NIX concepts are dealt with very differently to how Windows handles them. A good example is file permissions and ACL’s which are described well in this UNIX StackExchange reply. Since Windows has no notion of *NUX filesystem permissions/ACL’s we have to do extra work to store & manage the appropriate permissions for each file and folder in the *NIX compatible side of the filesystem. Again, review posts/videos linked above – there’s a detailed discussion of how the filesystem works.

Again, no, there are no VM’s at play here. You don’t even have to enable Hyper-V! You’re making a lot of incorrect assumptions. Please review the learning materials linked to above.

sudo only elevates the user’s permissions within the Linux side of the filesystem – it does not elevate the user’s permissions when interacting with the mounted Windows filesystem (e.g. /mnt/c/Windows). If you want to do crazy things in the Windows filesystem from within Bash, you’ll have to run Bash as Administrator

Right now, you cannot launch Windows processes from within Bash. We’re considering this for a future release.

Bash/WSL differs from Cygwin in that Bash/WSL can run unmodified Linux ELF64 binaries natively.

To fully understand the Bash/WSL source, you’ll need a pretty comprehensive understanding of the deep internal workings of the Windows Kernel & its source

Why can you not bring POSIX-compatible headers and source to Windows? Yesterday, I cloned the source of Redis and built and ran it on my Bash/WSL instance, in front of a room full of people, in just a few minutes.

“instead of what I believe is a small Ubuntu VM running on Windows 10” … again, NO VM’S ARE USED IN THIS FEATURE, and, NO, you do NOT need Hyper-V to be enabled to use Bash/WSL

I have one more really stupid question, but I can’t find the answer. I have Windows 10 Home, was not an insider, and so didn’t get build 14316. Will the anniversary build include ubuntu/linux/bash? I’d really like to play with (worked with *nix in several incarnations at various times of my working life and mostly enjoyed using them. Is Microsoft going to let us homers play, too?

Cats and dogs, guys! This is just incredible. So many huge leaps forward for Microsoft, I’m really liking the direction the company is going and these shifts and efforts have definitely made it highly relevant to me again.

Rich, it appears that /etc/resolv.conf stays empty if Windows is set to obtain DNS automatically. I have apt-get working properly now by adding Google’s DNS servers to resolv.conf manually with the following lines:

Yes, we mentioned that top isn’t working in this first build during our //Build intro video. Both top and htop are working better in current internal builds with more fixes on the way that should improve things further.

I understood what it is, but until I saw your CMDs typed-out… Why would anyone have (any) use for this, a program layer to translate Linux commands to the Windows equivalents – and all of the limitations, differences and (possible) incompatibilities that go along with it.

Sure, as a fun project to -just- play around with something different; but, unless the procedures, software and hardware inputs were to become universal (between the operating systems, which will never happen for practical and other purposes), this is such a waste of time and resources, heh. Still, kinda, cool; but, you know!..;) 🙂

We don’t translate Linux commands into Windows equivalents: We implement POSIX/Linux syscalls on top of the Windows kernel so that you can run unmodified Linux binaries on Windows. This is enormously important to developers working on open-source projects, many of which have hard dependencies on Linux binaries and/or behaviors.

And, no, this is not just a toy – this is a very real system that already runs a large number of important *NIX tools, and which will run more and more as we fill-out our syscalls implementation.

I’m *still* unable to download it (the company first-gen Surface Pro on the Insider fast track still blithely insists that there are no updates to be found).

I really wish Windows Update supported a degree of manual control, or that update files were actually provided that one could manually install. Meanwhile I’m testing the upcoming release of Ubuntu itself and I can just go to a website and download the ISO directly, or run a single command and have my system immediately check the right repo to update in-place. There’s more Windows could adopt from Linux than just a userland subsystem!

This is not true, you say its available, but the truth is I have set the insider mode 2 days ago and done all the steps properly and the windows subsystem for linux does not show up in windows features.

When you make an announcement that something is ready for download, you should really make it available for download. Looks to me that you are still the same crappy horrible user experience company you always were and far from catching up.

I definitely misread the comment last night and I thought it said one had to have a 32-bit version of Windows! But now it’s clear why it’s not working for me.

This would obviously have been a very, very good thing to mention in the many 1000’s of mentions about Ubuntu on Windows… That it only works on 64-bit platforms. That’d have saved me a whole lot of headache.

I am also simply not getting the newest insider preview on either of my machines. Yes, both obviously running 64-bit version. Though I understand that it obviously is a challenge to roll out software on such a large scale, I’d be a bit more sympathetic if there actually was a disclaimer warning that everyone will not get it immediately. At the very least, this blog post would have been a good place for it. Rather than have to dig through the comments to understand that there was not something wrong with either of my setups.

Hey Rich! I’m on a 64 based OS and processor. I’ve already set my developer mode on and my insider preview build to fast. I have not been able to find Windows Subsystem for Linux (Beta) on the list of windows features to turn on/off. I look forward to your advice as I’m very excited to try it out! Thanks!

Let’s say I run bash.exe (Now on Ubuntu subsystem), do ping 127.0.0.1 on Ubuntu subsystem, and return back to windows after execution automatically i.e. Start execution in Windows do something in Ubuntu and get back to windows!

Bash currently has an issue with ICMP that we’re working on fixing, but yes, you should be able to communicate between an app running on WSL and another on Windows via TCP/HTTP (once all remaining related issues are fixed).

The Win32 filesystem API did some cruel things with filenames (e.g. quietly strip trailing spaces and dots, which FAT couldn’t handle), which causes each file to be accessible under nearly infinitely many different names. That complex name ambiguity has caused various path-check security problems (e.g. git/mercurial .config protection, various IIS path-name hacks). Will this DOS-esque filename mangling also happen in the new Windows Subsystem for Linux, or will WSL get more POSIX-style fully transparent filename access (i.e. permit any UTF-8 string that does not contain “\n” or “/” as a filename)? I thought NTFS was quite able of that.

Great work guys. Most of the stuff I’ve tried work out of the box. Looking forward ditching VM anytime now.

I’ve been testing some php related stuff and here is a small report:

php7-fpm – not working as expected
apache/nginx – nope
postgres – no

php7 -cli works just fine
php7-built in server works just fine
composer had a little problem downloading bigger projects, lowering socket_timeout helped (60 -> 2 secs), apart from that it’s working just fine.
php scripts run from console – no problems
phing works just fine

Odd one …. I am on Fast Ring, running 10.14316 on x64 SurfacePro 3, activated Developer Mode, ticked the Lunix(Beta) box, rebooted but executing either `cmd` or `PowerShell` either as user or administrator, and typing `bash` all I get is either

bash : The term ‘bash’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ bash

OR

‘bash’ is not recognized as an internal or external command, operable program or batch file.

Figure some sort of path issue, but not really sure why that would be as I haven’t changed my %PATH%. Any ideas?

I have seen this feature variously referred to as a linux kernel running in user mode eg. https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/
But that is not what we have here, right? this is more like a lxc container except system calls are being intercepted and handled by WSL. IMHO I think a better approach is along the lines of coLinux where you have a complete linux kernel (UML) running in a windows process.

I don’t see anywhere in that article that states this is a Linux kernel running on Windows. Just as well really, because there is no Linux kernel in WSL!

The Ubuntu image is a kernel-less image and does indeed run atop a Linux-compatible syscall layer. This allows pretty seamless experience with a great degree of compatibility and device support because Bash can now enjoy the driver support etc. in the Windows kernel that it rests upon.

I have installed Build 14316.rs1 Windows 10 Enterprise Insider preview… which is set to fast in Dev mode However when i go to enable Windows Subsystem for Linux (Beta) in the Windows features it is not there as an option…..

I don’t have the option available in my “turn on features” list. Using Windows 10 Home 64 bit (upgraded from Windows 8). Developer mode on and I signed up for Windows Insider on the website. What else am I supposed to do?

Hey Essam. Sorry to hear you’re having problems. It may take a little while for you to be upgraded to a supporting insiders build. Some people are reporting it taking a while (I too have a machine that refuses to upgrade at the moment).

As a long time Cygwin / Linux user I would love to try this, I can spin up a new VM in minutes….so would you care to explain where I can get a *%£$@:#+# ISO from to install it? Seriously, I cannot believe how frustrating this is. Have been looking for several days now. I cannot find an ISO for build 14316 to download anywhere publicly, or on MSDN (I have a subscription). So I download 14295 from MSDN in the hope that it would service pack itself up…nope.

Perhaps this is all obvious to people who normally participate in Windows preview programs, but from my perspective you are making it hideously difficult to help you! If Gabe Aul is going to write a 10,000 word blog post announcing the availability of this build, don’t you think it would benefit from a big link at the top that says “DOWNLOAD HERE” ???

Contrast with getting the latest version of any Linux distro: it is a 5 second Google search.

Hi Rich, thanks for actually publishing my slightly ranty comment, I was wondering if it would get sent to /dev/null 🙂

Thanks for the link to the site, but the latest ISO there is 14295 which I already have, and as I and numerous others have said on this page, it has not yet updated itself despite moving to the “fast ring”. Hopefully it will show up soon…

No. Right now, Bash on Windows is a truly genuine Linux environment – none of the Linux tools know they’re not running on Linux! We are looking at interop scenarios for future releases, but not for the Anniversary Update.

Hi,
Great! Long time sh/ksh/zsh/bash user that is happy to do some scripting on windows.
But I dont understand how to enter the pipe character “|” in bash? It works in cmd.exe and powershell but in bash there is nothing.

On a french keyboard, |, @, \, etc. don’t work. They all require Alt Gr.
I found out that if you do Alt Gr+5, then Alt Gr+6 (that’s pipe), the pipe works. Same for @: hit Alt Gr+5 then Alt Gr+0. It’s as if Alt Gr+5 “enables” those characters.

Thanks for the great jobs!
I have been waiting for this for long. In old times, I had to install Linux VM to even just compile a small file.
Yes I know networking is not supported well as BETA version, but will you please let it free as native windows apps, please:)
And I got system error -25 when installing e.g. nodejs.
The symlink creation often fails.
Can you help?

There will be lots of quirks in this initial beta release of WSL. iptables, ifconfig etc., unlikely to make it – we’re prioritizing getting node, ruby, java, etc., working before adding network tooling support which can, after all, be managed via cmd/PowerShell/GUI.

Great work on this so far M$! Glad to see an innovative project that’s bringing me back to Windows from OSX/Linux (Right now Windows exists as a gaming machine in my home).

With regards to ifconfig, iptables, and what not. Really would hope you folks reconsider as I would love to be able to use tools like sshuttle, nmap, and other security related tools like aircrack-ng, metasploit, and many other things I resort to other OS’s to do.

I really would love to see dbus working fine and xwindows and everything (or almost everything) would work as expected in a true linux system. As long as it’s coming in the future that’s cool I guess, but please don’t stop short on what already is a VERY awesome thing 🙂

Rest assured, we continue to plow forward, improving the depth and breath of our syscall implementations, which delivers ever greater compatibility and more features. Remember though: We’re currently focused on making Bash & Windows a GREAT place for developers to do their best work. Scenarios beyond that will have to wait 😉

So I’ve spent all morning trying to get this update with no success. I have Developer Mode On, I’m Signed in to my Windows Insider Account, My Preview Builds are set to fast, Defer Upgrades is not checked off. The selection for WIndows subsystem for Linux still does not show up in my features list. I’m on Windows 10 Pro OS Build 10586.218. Any help would be greatly appreciated.

I would strongly encourage anyone thinking about twiddling registry settings trying to get insiders builds to update … to not do so. For example: the Anniversary Update builds we’re currently shipping don’t refer to anything called Threshold!

If you have twiddled these settings, you may want to disable insiders builds, reboot a couple of times and re-enable insiders … and hope your registry settings get re-set correctly.

I just upgraded my insider preview builds laptop to build 14316. I saw the feature for Ubuntu Bash and looked for the Windows Subsystem for Linux (Beta). It does not appear in my features list. My system is a 32-bit system (based on a Windows 7 Professional 32-bit initial install). Would this have a bearing on why I can’t take advantage of this feature? Please advise.

I love the way, Rich Turner always replies to all those ********* in the comments, politely. Rich dude they don’t deserve it.

Btw, Is there any work around for the issue of missing fonts in the terminal?
I tried to use oh-my-zsh, but as the powerline fonts are not present in windows, its messing up with the experience. I tried installing the fonts in the subsystem, but the shell doesn’t use them. Installing the true type fonts in windows also doesn’t work.

I was previously on Windows 10 build 10586, but I did not get the new insider build update for a week or so, despite the fact that I’ve gone over every possible tutorial and article that might provide a solution for such problem. I was getting to a point of frustration and decided to just do a clean install with the latest public ISO available to download, which is 14295(.1005) that I’m now successfully running. However, I still am not able to upgrade to the latest build as it does not simply show up?! I’m connected to and using my Microsoft Insider account, on fast ring , developer mode activated and a fresh clean install. What else am I supposed to do?

Rich, I’m not sure if my previous comment was posted, but if it didn’t, it was asking about whether support will be added to allow different default shells can be set, namely Fish and zsh. At the moment, Fish can be run, albeit not as the default shell, and zsh just dies. It would also be really really cool if we could get even deeper integration, like systemd being translated and stored in the Windows registry, maybe there will be more of something like this in the future. I’m waiting on the edge of my seat!

Hello, i did all what you give as a small tutorial for getting this right, but I don’t have that option to check in “Turn Windows Features on or off”. What possible can be wrong? I have 64bit version of windows, version 1511 and OS Build 10586.218

I was very excited to try this out, but my first test (using cmake/make) failed. Someone actually filed a bug report for this at cmake.org (https://cmake.org/Bug/view.php?id=16079), and this is precisely the issue I am seeing. Those same steps, however, succeed just fine under Ubuntu 14.04, 15.10, and 16.04. Having cmake/make support is essential, so I hope this issue gets resolved!

No, not at this time. Our primary objective in this first release is to deliver a genuinely Linux-subsystem & environment in which Bash and other Linux tools can run. We’ll consider potential interop scenarios in later versions.

I just upgraded to build 14332 and installed bash. When I try to ssh however, I get the message
“ssh: Could not resolve hostname (…): Name or service unknown”
I have tried to access other hosts to the same effect. apt-get update also complains about not being able to access the internet, but I have internet connection. Is there something I need to set up first? Thanks!

There is a known issue in the current builds where some users have difficulty reaching the internet from Bash due to the way earlier builds try to resolve IPv6 addresses names and routes. A simple workaround for now is to disable IPv6. The next insider build should deliver the fix for this (and other issues).

Hi,
WSL looks very cool. I installed it today. I’ve been working on making clang handy for cross compiling to various Linux targets with my ELLCC project (http://ellcc.org). I currently use Mingw-w64 to compile the tools for Windows, and I thought that using WSL would be a nice alternative to a Mingw build. So I tried this:
wget http://ellcc.org/releases/ellcc-x86_64-linux-0.1.30.tgz
tar xvfp ellcc-x86_64-linux-0.1.30.tgz
cp ellcc/examples/hello/main.c .
~/ellcc/bin/ecc -o hello main.c
I get:
rich@WINDOWS-81:~$ ~/ellcc/bin/ecc -o hello main.c
ecc: error: unable to execute command: posix_spawn failed: Invalid argument

Windows 10 Home
Ver 1511
OS Build 10586.240
Developer Mode
**************** Features On/Off: I have no “Windows Subsystem for Linux (Beta)” appearing in my Features.
Starting at:
|”Windows Process Activation Service”|then |”Windows TIFF 1filter” |
Also, I am working in Thailand if that has any affect on this feature being available to me.

You’re not seeing Bash/WSL because you’re not yet running a Windows 10 build #14316 or later. You must also be running an x64 OS & CPU.

To do so, be sure to sign up for Windows Insider program, login to your machine using the same MSA you registered, update to the latest Windows Insiders fast-ring update. Once you’re on a build later than 14316, you should see WSL appear in your “add/remove features” list.

I finally got the Ubuntu for windows binaries but I find it quite useless at the moment as I cannot specify the folder where I want to install apps from the bash and even when I got apps installed, I could not get it to start.

I tried to get Bash on Ubuntu on Windows up and running by following all the directions. Everything looked good, got setup with the insider program, turned on the advanced feature and ran lxrun /install which told me it installed successfully. However, every time I try to launch Bash on Ubuntu on Windows, I get a “Unsupported console settings. In order to use this feature the legacy console must be disabled.” message. Would love to see this work.

We strongly encourage you to NOT delve into the Linux filesystem from Windows – file corruption is very likely if you do so!

We recommend instead, creating your source projects somewhere on C:\…, D:\…, etc. and then editing your files in NP++/Sublime/VS/etc. and reaching into these folders in Bash via /mnt/c/… or /mnt/d/… etc.

WSL is built to be distro-agnostic, but we’re focusing our efforts on building great support for the largest number of developers possible so will be aiming to support more mainstream distro’s in the short and medium term.

I’ve been using Cygwin for years, so this feature intrigues me. Cygwin has always been a little, uh, pokey compared to Linux, so faster alternative on Windows would be welcome.

Access to the Windows filesystem from within GNU/Linux/Ubuntu/Bash (GLUB) environment the seems easy enough, but is the reverse possible? Can Windows access the files inside the GLUB environment? I guessing this is impossible because it seems like there are two different security mechanisms.

This feature is intriguing. I’ve been using Cygwin for years, and Cygwin can be a little, uh, pokey. A faster alternative would be welcome. There are a couple of features that Cygwin has that seem to be missing from WSL;

It seems easy enough to access the Windows filesystem from WSL, but is the reverse possible?

Will we ever be able to launch a Windows app from within the WSL environment?

Currently, we strongly advise against fiddling with files within the Linux filesystem from Windows – you may experience data loss and/or corruption if you do so!

We’ll also be exploring options for process interop in future versions of Bash.

But as a general guiding principle, don’t look to Bash as a mechanism for administering, automating or configuring Windows: Bash is primarily a tool to help developers work on open-source and/or development projects.

I am unable to install this still. I’ve enabled Developer mode, I’ve set my insider level to fast, I’ve checked for updates and restarted several times. I still can’t get the option listed in the Windows Features dialog.

Hi MSFT, just want to say thanks for doing this! I think one of the reasons that OS X is popular among devs is because it supports bash. I know that I for one sometimes use my old, less powerful mac for development just for the sake of being able to write shell scripts that will work on linux/osx. One example of this is developing cordova apps. Since cordova apps must be built on OS X for iOS, I want all my scripts to be compatible with bash so they still work when I build for iOS, not just for android on my windows machine. That forces me to run and use my old mac. I don’t like doing that b/c my windows computer is a much better machine, and macs cost a fortune. This update will allow me to do the same on Windows, so thank you very much!

Love it so far. I can’t seem to get sound working though. I’m not a linux master so it might just be me but aplay -l returns “no soundcards found”. Is sound supported? It seems that alsa packages are installed.

Even after two major insider builds, it appears that /dev and /proc are far from complete to allow apt-upgrade to work correctly (upstart and systemd both block a clean update, since dpkg bombs out with subprocess errors during the configure phase. I put a bug in about this a while back. Can we get any update on when these issues will be resolved?

This first release of Bash/WSL is going to have rough edges and gaps – we wanted to get a fair amount of stuff running and then get it into the hands of our users, rather than hold it back and wait until we had more implemented. That’s why this is marked as a Beta feature and why we’ve openly and explicitly made it clear that this first release will have gaps. This said, if you find issues, please search/add issues on our GitHub issues page here: https://github.com/microsoft/BashOnWindows/issues

Hi, thanks for the great bash. One question, I installed a Git inside the bash, and I have a Git in my Windows. Why I type “git status” in the bash, it said that this is git repository which is good, but it says there are bunches of file haven’t added to the stage area which I have already added, in the windows git, it says everything is added, just wait for commit. Why these different behaviors? The status of adding to stage file should be stored in the directory which I don’t see anything to do with the invoking of different git.

Our IT department have disabled automatic updates and will not make local exceptions, but I am allowed to install an update myself. So I went to MSDN and picked the latest Insider Preview but after installing I realized, that this is build 14295 so it is not above 14316, are there a chance I can access a newer Insider Preview build on MSDN anytime soon, or is there an alternative way of getting the update?

The thing is no updates appear at all when I use the ‘check for updates’ feature (I guess that’s what you mean?), I think the IT department has disabled this feature or made it look in some local distribution drive. Can I manually download updates for offline installation or do I need to wait for a newer build to be accessible through MSDN?

That is exactly the site I was looking for, thanks Rich! I now run Bash on Ubuntu on Windows, now I need to find out what use I can make of it as a developer most familiar with the Windows environment, but I have some vague ideas of useful applications. Anyway I think it is a great feature that contributes to the overall very good impression I as a developer have of Windows/Visual Studio etc. as a development platform. You’re on the right path!
Thanks again!
Sincerely Torbjørn

You have to be running an insiders build #14316 or later. It make take a few hours after turning on insider updates for the first update to be offered. After upgrading, so long as you’re on an x64 CPU & OS, you should see the feature show up.

When I initially left a comment I appear to have clicked the -Notify me when new
comments are added- checkbox and from now on every time a comment is
added I get four emails with the exact same comment.
There has to be a means you can remove me from that service?
Cheers!

Xming works nicely with several x-windows and opengl apps. That dbus fix helps with quite a few programs including terminator — which works now that the pty stuff is fixed. dbus is one of the more common users of named sockets by default so that fix neatly sidesteps that issue in a lot of cases. Next I’ll try to figure out how to launch terminator and hide the Bash on Ubuntu on Windows console since the bash.exe console has a lot of very basic issues at the moment with character placement.

Now I’m seeing how badly I can break it by updating from trusty to xenial since gnome-session is borked for remote X in trusty. The update is running fine so far but it’s got another half hour of downloads to go… crossing my fingers it won’t all come crashing down when it’s done.

I’am using a 64 bit version of win 10 enterprise edition. And the build number is 1551. I just turned on the developer mode but i couldn’t find the windows feature of Linux subsystem on the list. So, what can i do?

This is something that I have been wanting on Windows since 2000! I’m not a Windows Insider and honestly just started using windows as my daily OS (been using Linux since 1998). When can we expect this to be released to the general public?

Welcome to Windows Norm 🙂 You can run Bash now if you join the (free) Insiders program. However, if you’d rather wait until the formal release, you’ve not got long to wait – we’re targeting the Windows 10 Anniversary Update this summer!

Hi, I had Windows 10 pro build 10586 then I manually downloaded the iso build 14342 – 32 bit and I installed it. I put Fast in Insider level and I activated developers modality but now I’m still unable to visualize Windows subsystem for Linux (Beta) so I cannot use bash shell on Windows. What can i do ?

I have a question, is there a way to get the whole ubuntu operating system on windows, what I mean is: Can you get the whole ubuntu os running on windows like as an window or just being windows for that session?

When you open Bash, you’re running everything that you’d otherwise get if you installed an Ubuntu cloud server. The only thing that is missing is the actual Linux kernel, which is replaced by WSL sitting atop the Windows Kernel in this case.

Bash on Ubuntu on Windows is available on all Windows 10 client SKU’s. To install today, follow these installation instructions on https://aka.ms/winbashdocs. Otherwise, this feature will be in the Windows 10 Anniversary Update coming summer 2016.

– Some general commands were fine, like man, declare/other bash builtins, dd, vim, and more.

While I am really pleasantly surprised for this addition I can’t help but notice that cygwin already does 1,000 more things than this on windows, including GUI programs. I hope you guys continue to develop this and let it grow to surpass cygwin.

This is unfortunate that you’re not going to support the networking stack. Not because I want to configure my networking through bash, but because I want to run networking tools that are essential in the current internet as ICMP-based troubleshooting is no longer valid on most networks due to ICMP deprioritization.

Tools like tcptraceroute, nmap (nping), and others depend on being able to understand what interface to use, which generally comes from commands like ip a (which currently does not work. Ip is installed, but it does not show all interfaces as it does in any linux distro via ip a) or ifconfig. Even if modification of the network interfaces is not possible, you should at least be able to list them in a relateively simple and intuitive way.

We year you: ip/ifconfig are high on our list of improvements for the future, but require some core networking changes that we couldn’t get through in time for Win10AU. This is one of the reasons this feature is marked as Beta in Win10AU.

Note that networking is something we take very seriously, and have to carefully engineer changes so that they don’t negatively impact stability, performance, and most importantly, security.

Rest assured that we’ve not stopped working just because Win10AU has shipped – we’re still hard at work on these and many other improvements.

If you’re keen to try-out our many up-coming improvements, be sure to join the insiders program and get on the fast ring 😉

I tried following these instructions, but the “Windows Subsystem for Windows” never shows up in my list of windows features. Ive tried restarting my computer and searching google. Is this feature still available on windows 10 home edition?

Ping is available, but only from an elevated command-prompt. For security reasons, non-elevated Windows apps are not permitted to directly accept/emit ICMP messages – a low-level mechanism performs ICMP on behalf of Windows commands like Ping instead. Current implementations of Bash/WSL, however, try to directly handle ICMP messages and thus will fail unless elevated. We’re working on fixing this issue in future versions.

Many network diagnostic/control commands will currently fail to work correctly in Bash/WSL – we’re continuing to improve our networking support to enable these tools to work in the future.

Working on Surface Pro 3 | Windows 10 Professional
I am part of the ‘Insider Program’, as well as being under developer mode, however am unable to do the following:
a) find the update for the build (says device is updated, but I am still under an older build)
b) find the subsystem for linux ubuntu

I am windows insider, I have checked the beta linux from the setting of system software and also run lxss.exe with /install. Script worked, downloaded package from windows store and started installing. Problem is that after let’s say 2 min of extensive disk use starts bash application which I monitor through taskmgr. Problem is – bash can run even 1 h and doesn’t install the ubuntu bash on my system. I have removed all files via lxss.exe /uninstall /full and tried again but the same problem. Anyone can help me?

Scheduled task, run as different user, call bash script. Got it working, but it was a day of work. Had to open bash “as a different user”, which then wanted to install ubuntu user space again. I guess that makes sense, would be weird supporting multiple users. Then I got dcomcnfg permission errors in event viewer. I had to go into regedit, give permissions to the AppId for admins, then find the AppId in dcomcnfg and change permissions for it so the different user could run it. Still didnt work, rebooted, and it works now.

i wanted to emulate cron with scheduled tasks, but im not sure why I even went down the path of a running as another user.

I guess its beneficial in that, i can have to run whether user is logged on or not

Right now, we do not support server scenarios (e.g. running cron jobs, long-running daemons, etc.). Today, once your last bash console for a given session is closed, the entire bash session is terminated.

When I run “bash” in Command Prompt it just gives me a flashing cursor. I’m on 1607 14393.0. I originally installed without running “Enable-WindowsOptionalFeature” in Power Shell and when I ran “bash” in Command Prompt and entering “Y” it hung for several hours – perhaps 1.6gb available was not enough? I subsequently freed up storage space, disabled “Windows Subsystem for Linux (beta)”, restarted, turned off Developer Mode, restarted, turned on Developer Mode, enabled ran “Windows Subsystem for Linux (beta)”, restarted, ran “Enable-WindowsOptionalFeature” in Power Shell, and ran “bash” in Command Prompt (several times). Ideas?

Just got the update to Windows 10 Anniversary Edition to complete. Its on a 32 Bit version of Windows, but I don’t see the installation choice you have above at # 3) for Features / Window Subsytem for Linux? Was it dropped from the 32 Bit version of Anniversary edition?

Hi Rich, congrats for the great work and more than that appreciating your calmness to reply to each comments, read that there’re network problems and i am feeling the same , expecting it will be solved in future release, i have a single question, is it possible to reboot/restart the bash environment as normal Ubuntu does?, again thanks for the maasive works that you guys have done .

I completed the Anniversary Update for Win 10 Pro and enabled developer mode and was able to add the feature however when I tried to install bash using cmd prompt, I got stuck on

Type “y” to continue: y
Downloading from the Windows Store… 100%
Extracting filesystem, this will take a few minutes…

The few minutes take forever. The only thing I found on my boot drive was the bash.exe file under System32. I deleted it and also exited the cmd prompt and tried to reinstall. I had no joy. Then I removed the feature from Control Panel, restarted and re-enable the feature. However when I typed bash in, it’s still acting like it’s trying to extract the filesystem (Does nothing). How do I restart the bash installation of Ubuntu and what is preventing the filesystem from being extracted?

In addition to Avast and Kaspersky anti-viruses that you mention, I had to totally uninstall BitDefender Internet Security 2016 to get the linux subsystem to install, though only on one of my three machines running BitDefender (2 VMWare Fusion VMs, and one physical machine – I had to uninstall on one of the Fusion VMs, not the other, and not the Physical machine). So, in particular, BitDefender appears to be causing problems, also, and in general, seems uninstalling anti-virus is a good first troubleshooting step for installing the linux subsystem for windows when it freezes at the “Extracting filesystem, this will take a few minutes…”.

I installed this, but…
After asking me to input user and password, it froze.
No more luck starting it again. Freezing either from menu or cmd.
I restarted the computer, and now it starts, but as root@COMPUTER.
Does somebody know how to change that? It’s not secure at all. Will it allow to bypass UAC like that?
Since there’s no support yet, it’s hard to find related blog or forum post…

I set the user, the password, I get the feedback “passwd: password updated successfully”.
And then nothing. It stays like that. No command prompt.
If I start another instance of bash, it stays black. No prompt.
If I restart I guess I’ll have the root issue again…

Make sure you close all your Bash consoles before running lxrun: If you don’t it won’t be able to delete all the files since many will be held open while in-use.

Because you’ve having such issues, try this: Close all your consoles (might want to reboot just to be sure). Then open CMD or PowerShell and run “lxrun /uninstall /full”. Once complete, reboot again (just to be sure). Then login and open a new CMD/PowerSHell console again and run “lxrun /install”. This should download a new copy of the distro and re-install it for you. You should be prompted for a UNIX username and password.

Note: If you’re running Kaspersky, Avast, AVG etc. anti-virus, try turning them off during install – they appear to be causing some issues in WSL on Win10AU as they aggressively scan the files extracted from the distro.

I have 3 partitions on my hard drive C:, D: and E:.
By default I have mounted C and D partitions. But how to mount third partition E?
I know it’s impossible to mount usb drives, but it’s a permanent hard drive.

Anyway bash on windows this is an awesome feature.
Thank you very much guys!

I finally have the Win 10 Anniversary Edition installed (had to force the install, but it worked) and have some feedback for the guys working on the bash integration. Please understand this is all IMHO; as a background, I’m an ol’ UNIX hack dating back over 25 years or so.

First and foremost this is a phenomenal addition and a great first step. However, I think it could use some spit’n’polish:

1. The terminal window. It needs to be thrown away. I understand the CMD window is part and parcel of Windows, but it’s just not… UNIX-y enough. Chuck it. Look to how Cygwin handles the TTY and follow suit. Theirs is a better solution.
– Resizing the window shouldn’t re-scroll the window to some.. random spot.
– Cut and paste should just … work. Highlight and it’s automatically copied. Tap another mouse button and it’s pasted. Easy.
Some of this is just terminal emulation. But I get the feeling the crux of it is the actual window itself. IMHO: kill it with fire.

2. Filesystem access. If I have extra filesystems mounted off of directories on C:\, I should be able to access them from within bash. Currently: I can’t. The only way I seem to be able to access them is if they’re represented by a drive letter. Well, drive letters are sub-optimal, and Windows clearly allows mounting filesystems on directories (eg: c:\media, c:\opt, etc). I’d like to be able to see those.
– It would also be nice to be able to see SMB-mounted drives as well, though I can grok the difficulty there.

Please keep at this. I’m so digging it. For the time being I’ll continue hacking away with cygwin, but you’re getting there!

Re Console: A major overhaul of the console is currently underway. We’ll have lot more news on this front over the next several months, but know that we have resources allocated to work on fixing copy & paste, colors, VT sequence improvements, mouse support, etc.

Also note that in the console today, you should be able to use your mouse to mark text, right click to copy, then right click again to paste.

Re. In Win10AU, we only mount fixed drives – we simply didn’t have the time in RS1 to handle removable drives, network locations etc. We’re making a number of improvements in this area in RS2 and beyond.

As you’ll have noticed, WSL is currently marked as a “Beta” feature. There’s a reason for this: We’re nowhere near “done” enough to call this a fully supported feature yet, but we are working to get there ASAP. Please be sure to jump on the Windows Insiders train to get access to the many improvements and fixes we’ve got planned – and be sure to search and/or file bugs on GitHub (https://github.com/microsoft/bashonwindows) and feature asks on User Voice (https://aka.ms/winbashuv).

While installing bash if we create a user then we can find its directory in “C:\Users\USERNAME\AppData\Local\Lxss\root”
But what if we are using “root”?
no user created !!!
where to find its directory in Windows ?

I just (today, 02 OCT 2016) installed latest anniversary UPGRADE version Windows 10( Version 1607, build 14393.222) and then BASH-Ubuntu. Thanks, BASH is working very fine. I can access Windows file system from BASH/Linux (by doing … cd /mnt/c Or d or f) but not able to see BASH/Linux files (file system) from Windows explorer (I even opted the option to show hidden files!). I am not able to see the suggested directory like “C:\Users\USERNAME\AppData\Local\Lxss” … there is a “Users” under “C:” but no directory available for the Linux-BASH USERNAME that I have created is visible under C:\Users. Please help… where/how do I see the Linux-BASH files in Windows 10 Explorer?
Thanks… MB Deo.

You must be running an x64 SKU of Windows 10 Anniversary Update on an x64-capable PC, and you must be running a build of Windows 10 >14316. I STRONGLY recommend you make sure you’re running Win10 Anniversary Update (or later), and are running a 64-bit version of Windows.

Same here. It was working and I had become accustomed to using this feature. All of the sudden I get the same error. The app that you are trying to run is not supported on this version of Windows.
PS C:\Windows\system32> [System.Environment]::OSVersion

Ah hah! We can’t ship WSL in Enterprise LTSB versions of Windows because WSL is currently a beta feature. We’ll remove the beta label at some point in the future once we’re comfortable that we have sufficiently comprehensive perf, stability, manageability, etc., to meet the LTSB requirements.

I have an older, pre-release version of bash on my Windows 10 laptop, installed by joining a “cutting edge Windows developer group” of some kind. It was much, much better than this newer version that I just installed on my desktop. What I like better about it is: 1) I could refer to directories like this: /c/Program Files… instead of /mnt/c/Program Files…, 2) The PATH environment variable was automatically set to my Windows PATH variable so I could immediately run my regular Windows programs, 3) When I do “cd ~” I was placed in my Windows user’s Documents folder, 4) it didn’t require me to create a new user – I’ve already logged in to Windows, why do I need a new user account?, … I’m sure that if I use it (which I may not), I will find a lot more problems with it. Admittedly, what I want is to operate as a Windows user, but have access to Linux commands and utilities and NO MORE BACKSLASHES! The new focus seems to be to create a pure Linux environment which, as an aside, has access to the files on my Windows hard disk. Much less useful in my opinion.

The bash that you refer to that allowed you to “refer to directories like this: /c/Program Files… instead of /mnt/c/Program Files” was likely a Cygwin Win32 Bash shell, not Bash on Windows: WSL only mounts your fixed drives to /mnt// at present.

If you `cd ~` and end up in your Windows user folder, you’re running Cygwin’s Win32 bash, not Bash on Ubuntu on Windows.

You need to create a new user when installing Bash on Ubuntu on Windows because you’re installing Ubuntu Linux itself and Linux’ user account model is very different to Windows’. Rather than (poorly) weld the two together we left them separate.

If you want to be able to run genuine Linux binaries unmodified, they have to run in Linux. On Windows, you can do this in Bash on Windows (on WSL), or in a Hyper-V VM. If you want the convenience of some GNU tools on Windows, use Cygwin which is a port of the GNU tools recompiled as Win32 apps for running in Windows itself.

I have been Bash on Windows 10 for a while now. In fact, I updated to Ubuntu 16.04 and have install a number of packages via apt-get. Everything has been going well until today. I attempted to perform a “sudo apt-get …” and it failed due to the system not being able to identify the Domain Name.

Note that Windows update KB3200970 has just been installed.

I looked up what might be causing this problem and found an article that suggested that the “host name” be put into /etc/hosts. However, sudo doesn’t work, so the edit to /etc/hosts can’t be completed. So I tried to go around this by using a Cygwin terminal to edit the file. I went to my login directory, then through AppData/Local/lxss/rootfs/etc and used an editor to add the line to /etc/hosts.

Now when I attempt to start a BashShell session, the window flashes up for a split second then goes away.

We had Bash working on several machines, Windows 10 Ent 2016 LTSB Ver:1607 OS Build:14393.447.
Some reason (maybe updates) Bash no longer works on any machine, it tries to open, flashes for a second and closes.
Tried reinstalling now get.

— Beta feature —
This will install Ubuntu on Windows, distributed by Canonical
and licensed under its terms available here:https://aka.ms/uowterms

The app that you are trying to run is not supported on this version of Windows.

What has happened and how can we fix it. We have just rolled out machines on LTSB for Bash and have more to roll out.

I am trying to locate the bash directory from File Explorer in Windows. I have changed the view options in order to show hidden directories, however the …\Local\lxss directory is not there in my system. Where else can the directory be located? Thanks!

As per the red text under the “Installing Bash on Ubuntu on Windows” heading:

Important: To run Bash/WSL, you must be running a 64-bit version of Windows 10 on a 64-bit PC. If you do NOT see “Windows Subsystem for Linux” listed in the optional features, you are likely not running a 64-bit version of Windows 10, or are running a build of Windows 10 prior to #14316.

I’m having trouble using commands I’ve downloaded from the bash terminal getting errors like “/sbin is not included in PATH”, and “Couldn’t connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory” for commands like iwlist, network-manager commands, and ifconfig. I’m new to bash and cannot find any forums matching my problem. If anyone can help refer me to a fix or diagnoses it would be greatly appreciated.

I was trying to uninstall Bash on Ubuntu on Windows because I forgot to insert username and password: I tried to search on the net but the only answer was to use the command lxrun /uninstall /full, but it says “command not found”. How can I solve?

I installed the Windows-Subsystem-Linux successfully but I can’t find the desktop app. Every time I have to run command prompt as administrator and then run ‘bash’ command. So how can I start from the startup menu??

If you’re running Creators Update and have enabled WSL & installed Ubuntu, you should find Ubuntu in your start menu. If you prefer to run Bash from the command line, you do not need to run an elevated Cmd shell to launch Bash – you can do so from an in-elevated shell.

@Rich Turner, is there a way to run sshd using Bash on Windows Subsystem for Linux? In other words, can I install sshd using Bash and then ssh into my Windows 10 computer from another computer existing either on my local area network, or from without the network? If so, can you outline the steps necessary. Feel free to email me separately (akibuflash@gmail.com). Primarily, I have backuppc running on a debian machine and want to ssh into my Windows 10 machine to back it up. Thanks in advance.

WSL does run sshd … but you do have to start it manually and you have to keep a Bash console open. This doesn’t really make it a good option for remote admin. We are looking into running Linux daemons/services at some point, but there’s quite a lot of work to do here.

In fact, I would like to use dos2unix embedded in Ubuntu distribution like grep, ssh or other linux command.
Normally, if a command is missing, you should be able to add it through a package. For dos2unix, there is an error. Any idea ?