Windows 10 Creators Update: What's new in Bash/WSL & Windows Console


When Windows 10 Anniversary Update (AU) was shipped, the Windows Subsystem for Linux (WSL) was still far from complete, and was known to have many incompatibilities, especially with popular developer tools like node.js, Java, etc.

However, it was important to get this exciting new feature into the hands of real users so that we could learn from them - YOU! - what WSL needed to run, what worked, and what didn't, etc.

And ***wow!*** did you, our community respond! πŸ™‚

This release was built by and for YOU!

On behalf of the WSL & Console engineering teams, a very sincere and grateful THANK YOU to all of you who've tried and used Bash/WSL over the last 12+ months, and especially to all of you who filed issues on our GitHub issues repo, contacted me on Twitter, submitted/voted for asks on our UserVoice, asked questions on StackOverflow, AskUbuntu, Reddit, our Command-Line Blog, the WSL Team Blog and elsewhere.

The massively improved Bash/WSL & Windows Console that we're shipping in Windows 10 Creators Update is due largely to all of you!

What's New in WSL?

During the Windows 10 Creators Update (CU) development cycle, the WSL engineering team implemented hundreds of fixes and improvements, most of which were catalogued in the WSL release notes. While we highlighted some of the more visible features of Console & WSL in our Command-Line Blog, we thought a consolidated list of the most important features and improvements would be useful.

So, read on to find out, what's new in Bash/WSL & Console in Windows 10 Creators Update:

More compatibility

A key goal for Win10 CU was to dramatically improve WSL's depth and breadth of compatibility with the Linux System Call Interface (SCI). By expanding and improving our syscall implementations, we increase the tools, platforms, runtimes, etc. that our users need to run.

The result? In Win10 CU, most mainstream developer tools now work as expected, including:

  • Core tools: apt, sed, grep, awk, top, tmux, ssh, scp, etc.
  • Shells: Bash, zsh, fish, etc.
  • Dev tools: vim, emacs, nano, git, gdb, etc.
  • Languages & platforms: Node.js & npm, Ruby & Gems, Java & Maven, Python & Pip, C/C++, C# & .NET Core & Nuget, Go, Rust, Haskell, Elixir/Erlang, etc.
  • Systems & Services: sshd, Apache, lighttpd, nginx, MySQL, PostgreSQL
  • And many, MANY others!

Note: Some of you may also have been following along with some intrepid explorations into running X/GUI apps and desktops on WSL. While we don't explicitly support X/GUI apps/desktops on WSL, we don't do anything to block/prevent them from running. So if you manage to get your favorite editor, desktop, browser, etc. running, GREAT πŸ™‚ but know that we are still focusing all our efforts on delivering a really solid command-line experience, running all the command-line developer tools you need.

Ubuntu 16.04 support

While Win10 Anniversary Update delivered Ubuntu 14.04 support, in Win 10 Creators Update, WSL now supports Ubuntu 16.04. Any new Bash instances installed on Win10 CU will now install Ubuntu 16.04.

If you'd like to find out what version of Ubuntu you're running, enter the following at your Bash on Ubuntu on Windows Console:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial

Important Note: Existing Ubuntu 14.04 instances are NOT automatically upgraded to 16.04: You must manually upgrade your instance to Ubuntu 16.04 in one of two ways:

  1. Remove & Replace (recommended)
  2. Upgrade In-Place

Remove & replace

If you're currently running an Ubuntu 14.04 instance, we recommend removing and replacing your existing instance with a fresh new Ubuntu 16.04 instance.

WARNING: The instructions below will delete your existing distro and any of the files you've stored in the Linux filesystem. Therefore, be sure to copy/move any Linux files you want to keep, for example, to a Windows folder (e.g. /mnt/c/temp/wslbackup/...) BEFORE removing and replacing your instance!

To remove and re-install your Ubuntu instance, run the following commands from a Cmd/PowerShell Console.

C:\> lxrun /uninstall /full /y
...
C:\> lxrun /install

The lxrun /install command above will then download and install a fresh new copy of Ubuntu 16.04 onto your machine.

Upgrade In-Place

If your Ubuntu instance is particularly complex to configure, you can opt to upgrade it in-place, though this may not result in an optimal instance.

If you opt to upgrade your instance in-place, use Ubuntu's instructions for upgrading an existing instance:

$ sudo do-release-upgrade

Ifconfig & network connection enumeration support

One of Win10 AU's biggest annoyances was that it lacked the ability to enumerate network connections which prevented tools like ifconfig, gulp, npm and others from running correctly.

This has been fixed in Win10 CU and you can use ifconfig to enumerate and examine the configuration of your available network adapters:

1-ifconfig

Ping & ICMP network support

Another issue that users quickly bumped into in Win10 AU was the fact that non-administrators could not ping a network endpoint. This has now been fixed in Win10 CU:

2-ping

File change notification support (INOTIFY)

Another much-requested improvement is the ability for a tool to register for notifications when a file is changed. This is an essential capability used frequently by web, Node.js, Ruby and Python developers, and many others.

For example, if you were working on a node.js website project, editing your source in vim, Emacs, Sublime Text, VS Code, etc., whenever you save your code, you might want your website server to reload your newly changed page source so that you can refresh your browser and see your changes reflected immediately.

Well, now you can! WSL supports inotify which allows apps to register for filesystem change notifications, which can then trigger actions, like rebuilding a project, or restarting a local web server. This works for both DrvFS and internal LXFs locations.

Importantly, this file change notification support also supports file change notifications for files in the Windows filesystem. This means that you can edit your project source stored on your Windows filesystem using a Windows GUI editor such as VSCode, Visual Studio, SublimeText, Notepad++, etc. and have node.js running in Bash/WSL serving your website locally, and picking up your changes as you save your files!

3-inotify

Windows <-> Linux Interop

A key goal of building WSL was to reduce the "gaps" experienced when running Windows tools alongside Linux command-line tools and environments. When we shipped WSL in Windows 10 AU, we brought Linux and Windows alongside one another, but there was still a large "gap" - while both systems could share some of the same files, each environment was pretty isolated from one another.

Users often told us that they wanted to be able to invoke Windows applications from within Bash, and to invoke Linux applications from within Windows. So, we added this feature!

In Windows 10 Creators Update, you can now launch Windows apps & tools from within Bash ...

4-interop

... and you can launch Linux binaries/commands/scripts from within Windows:

5-interop-bash

Read our blog post on this feature for more details:

UNIX and Netlink Socket improvements

Some aspects of UNIX sockets and Netlink sockets were not supported in Anniversary Update.

In Creators Update, UNIX datagram sockets and Netlink sockets, options & properties were added to WSL, enabling various forms of IPC that allow many modern tools  to run on WSL.

For more details, review the WSL Release Notes.

TCP socket & IPv6 improvements

In Creators Update, the WSL team and Windows Core Networking teams worked together to enable WSL to support several additional IPv6 & TCP socket options & properties. This enables a broad range of tools and technologies that rely upon various network socket features, improved IPv6 support, etc.

For more details, review the WSL Release Notes.

Miscellaneous WSL Improvements

The WSL improvements listed above are just a selection of the most visible and noteworthy changes, but there are many hundreds of other WSL improvements included in Creators Update. Below are a few more, and don't forget to dig through the release notes for more detail.

Windows Console & Command-Line Improvements:

The Windows Console is one of the most fundamental pieces of the entire Operating System and has been part of Windows for several decades. Around 2 years ago, a new Windows Console team was formed to own give the Console its biggest overhaul in more than 30 years!

One of the key drivers for the Console overhaul was the need to enable the Console to render the output of Linux command-line tools & applications running on WSL. The team are also performing some much needed surgery & modernization to the Console's underpinnings and internals, which will allow for far more rapid and exciting feature development in the future.

So, what's new in the Console in Win10 CU?

Many VT Sequence Improvements

Because the Windows Console was not originally built to support *NIX, it was unable handle the different behaviors and output formatting codes (ANSI Escape Codes & VT sequences) generated by *NIX command-line tools & applications.

But, no longer:

In Windows 10 Anniversary Update, the Console was improved with the ability to handle most common VT Sequences, enabling it to correctly render the majority of simple text formatting. However, it lacked support for several advanced scenarios.

In Windows 10 Creators Update, Windows Console's VT Sequence support was further improved to correctly handle several more advanced VT Sequences, enabling the Console to light-up many rich text-UI features in vim, emacs, Midnight Commander, tmux, htop, etc:

6-console-tmux

24-bit color support

Another frequent ask from the community was for the Console to support > 16 colors. Support for 256+ colors is increasingly important when working with today's increasingly rich and sophisticated command-line tools, shells, etc.

In Win10 Creators Update, the Console has been updated to support full, glorious 24-bit color!

7-console-colors

For more details, read the accompanying blog post announcing 24-bit color support in the Console.

Mouse support

With the number of rich, text-based UI's ever increasing, users wanted mouse support for tools like Midnight Commander, Htop, etc., so we added mouse support in Win10 CU.

* Author's artistic rendition for illustrative purposes ;)

* Author's artistic rendition for illustrative purposes πŸ˜‰

Symlinks in Windows without Admin Rights

Symlinks are an important tool used comprehensively in Linux, but less so in Windows since admin rights were required to create symlinks, and the Console in which the symlinks were created had to be run elevated as admin - something users rarely do.

In Windows 10 Creators Update, the admin-rights restriction has been lifted for users who have enabled developer mode, allowing symlinks to be created from an un-elevated Console.

Read the release announcement for more symlink details & examples.

What's Next?

So, are we done yet? Noooo! Far from it!

Both WSL and Windows Console have backlogs stuffed full of improvements, features and new capabilities that we're eager to get working on.

In addition, while Console and WSL have been significantly improved in Creators Update, it is important to note that WSL remains a beta feature in Win10 Creators Update while we shave-off some rough edges and improve some core features and capabilities.

We continue to forge ahead with many planned improvements and exciting new features. Stay tuned for lots more exciting features coming in future releases of Windows 10: If you want to be among the first to access and experience improvements planned for the next Windows 10 release, be sure to sign up to the Windows Insider program and set your Windows Insider Update Ring to "Fast"!

And, as always, PLEASE KEEP YOUR FEEDBACK COMING: Let us know if you find issues when using WSL on the WSL GitHub issues repo, feel free to ask questions on Twitter, suggest new features on UserVoice, carry on all the great discussions on Reddit, StackOverflow, SuperUser, etc, and keep the comments coming on this Command-Line Blog, and the WSL Team Blog.

Onwards! πŸ˜€

Comments (159)

  1. Matt Lacey says:

    Keep it up! Pretty sure everything I've wanted has been covered in this post... Love it.

  2. Thank you for the Awesome blogpost πŸ˜‰

    1. Thanks James. Glad you like it! More on the way πŸ˜‰

  3. David says:

    This is amazing and the way you're responding to feedback and implementing it is also amazing. I love WSL so much, I hope you guys are having as much fun building it as I'm sure we all are using it!

    1. Building this thing is a lot of hard work, but it's a HOOT! πŸ™‚

  4. Warchylde says:

    Thanks for all the work you guys are doing Rich, may not seem like it in the bug tracker on Git but there are numerous people that appreciate it. I will be checking NMAP and the like for functionality once I have updated.

    1. LOL πŸ™‚ Thanks Warchylde. Do keep the feedback coming - we love it all - good and bad: We couldn't build this thing without all the feedback!

  5. Awesome to see this. Thanks for all the improvements, it really sways my decision when I'm choosing windows/osx as a dev environment.

    1. Sorry - no container support: You'll want Docker for Windows!

  6. JUSTIN P KING says:

    currious about linux containers now .... only one way to find out ....

    1. Sorry - no containers - you'll want Docker for Windows.

      1. Gutemberg Ribeiro says:

        Any particular reason why docker would not run on WSL? The missing thing INOTIFY is there now along with networking. Are the linux namespaces available as well?

        1. The general answer to "Any particular reason why would not run on WSL" is "yes" πŸ˜‰

          INOTIFY support is only a small part of the work required to support containers. We've more work yet to do here.

  7. Bogdan Kravtsov says:

    You guys are awesome. Before I had to switch to another machine or fire up a virtual machine, we meant I had to share resources... but now, I'm working between Linux and Windows seamlessly. Thank you!

    1. Woohoo! πŸ˜€ Great to hear - thanks for giving us a try ... and for sharing your experience! KEEP IT COMING!

  8. paul says:

    Stop saying you're "running node.js in bash". You don't run anything in bash except bash scripts. Bash is not runtime environment.

    1. But it's so much more terse than "asking Bash to send a request to the kernel to spin up a new process into which node and its dependencies are loaded & bound, and then started by executing node's main()".

      At some point, one has to replace absolute accuracy with metaphors that work.

      1. A different Paul says:

        I wish I could upvote this comment - well said πŸ™‚

  9. Nemesis Fixx says:

    Holy Cow!!
    This is immense!

    Wow, so no more Cygwin/GitBash hacks for me... and definitely, no need to run a *nix in a VM just to feel at home! The Nu Windows is No Windows!

    1. LOL πŸ™‚ Thank you! Glad you're as buzzed as we are! πŸ˜‰

  10. Mike says:

    WSL is great - nice work guys, I've been using it for a few months now and find it invaluable for all sorts of stuff. As a developer all the best/good tools are on linux and I need connectivity via SSH to servers, scripting etc. WSL fits the bill nicely because I don't necessarily want to install a full Linux on laptops etc or run a VM. Purists may disagree but I reckon its a great step forward. It'll be nice to see a few of the rough edges with the filesystem etc sorted out - I'm installing the updates as I write;-)

    1. Many thanks Mike! πŸ˜€ Glad we're making your life easier and more fun πŸ˜€

  11. Bob says:

    Thanks for this, lets hope win console soon will be as good as macos, linux consoles.

    1. That's the goal ... eventually πŸ˜‰

  12. L. says:

    At this point, the main issue I have with WSL is (missing) support for network filesystems and removable drives. Second would be wsl/win32 interoperability regarding symlinks and permissions.

    1. Funny you should ask πŸ˜‰ https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/

      Yes we'll be improving symlink interop in the future too.

      We fully honor Linux DAC permissions in the Linux filesystem, but there's no clean mapping between Linux DAC and Windows' ACL's so in the Windows Filesystem, everything is owned by root.

      1. L. says:

        Regarding the other post: I saw this, it's great!

        "We fully honor Linux DAC permissions in the Linux filesystem, but there’s no clean mapping between Linux DAC and Windows’ ACL’s so in the Windows Filesystem, everything is owned by root."
        Well, yes and no. Have a look at NFSv4 ACLs (and how it interacts with unix-style permissions) and the RichACLs patch on Linux. This would be the way to go, IMHO.
        Currently, having everything as 0777 on drvfs is annoying. Some software (ssh, gpg) checks the permissions and can be naggy about it.

  13. James Urry says:

    Do you see the windows console continuing to develop alongside PowerShell? For a long while i've assumed it was just a matter of time before PowerShell replaced it. But it seems that the console is being actively developed. What is the relationship between the two?

    1. Windows Console is a console/terminal app that communicates with command-line applications and shells like Cmd and PowerShell on Windows, and Bash, zsh, fish, etc. on Linux.

      Windows Console is under active, heavy development as I type as we're giving the Console its biggest overhaul in > 30 years!

      PowerShell development also continues (by a different, partner team) in the open - see their GitHub here: https://github.com/powershell/powershell

  14. Anton says:

    Thank you.

  15. Archer Stephane says:

    Thank you Microsoft!!! <3
    I'm tired to reboot to linux/windows every time <3
    Next time I want a tilling manager (like i3wm) for windows and that will be the best platform ever πŸ˜‰
    And why not NTFS support driver or whatever for linux to help the two system share folder easily? (on external hard drive for exemple)
    I know I'm asking a lot ^^
    Thank you again Microsoft!!! <3

    1. LOL πŸ™‚ Many thanks Archer. We don't have any plans to support X/GUI apps at this time.

      We do have some plans to improve filesystem interop, but it's actually a lot more complex than it may appear! Bear with us! πŸ™‚

  16. Kori Francis says:

    Tried both in-place and replace methods, still seeing 14.04 Trusty. Any suggestions?

    1. Yes - upgrade to Creators Update. If you're getting 14.04, you're running Anniversary Update.

  17. gzmask says:

    Gotta say good job M$

  18. "ifconfig" makes it sounds as if you're using the legacy ioctl() based network controls as opposed to RTNETLINK? Is that the case, or does iproute and friends work?

    I'm intrigued by this. I'm wondering if I could grab an iso somewhere and give it a try?

    1. Okay, posted too early. According to the release notes you actually *do* support netlink based network controls.

  19. Still no nuget with Mono?

    1. Sorry - not our area: Might want to go ask Mono or NuGet teams.

  20. Name says:

    Love you guys!

    1. LOL πŸ™‚ We love you (all) too πŸ™‚

  21. Rich Selmon says:

    Any updates on an offline installer for WSL?

    1. Nothing to report at this time.

  22. Ryan V says:

    This looks like a great update! Lots of things on my personal wishlist are on here.

    One of the issues I had with the original release is that the filesystem you existed in was somewhat "virtual" in that if you went to your bash home directory and cloned a git repo, you couldn't really access those files from windows for use w/in an IDE, etc. If you did manage to access and alter them from the windows side, it pretty much broke the whole experience because bash seemed to forget those files existed, or something along those lines (iirc).

    Is that something that's been addressed in this release?

    1. Because of some major differences between the Windows and Linux filesystems, some "Gaps" remain, including the fact that Windows can't see into the Linux filesystem.

      We ARE, however, very keen to reduce this gap and have some work planned to improve this issue in the future.

  23. bob says:

    >One of the key drivers for the Console overhaul was the need to enable the Console to render the output of Linux command-line
    >tools & applications running on WSL.

    The reason I'm done with the platform.

    You waited on all of this until you had to do it- and you had to do it for Linux, of all things.

    1. Prior to WSL, there were relatively few requests for VT support in the Windows Console, and there were many 3rd party alternatives to satisfy those that DID need Linux capable console.

  24. Eduardo Luna says:

    is there any way to run an x server on this?

    1. Many do, yes. Though note that we don't spend any time adding/massaging features to support X/GUI apps/desktops, etc. That said, we don't do anything to block them either - so if they work for you, GREAT! πŸ˜€

  25. ftt says:

    Wow! That's awesome πŸ™‚

    1. LOL πŸ™‚ Thank you! πŸ˜€

  26. yeah says:

    Wow, this is all so great!

    1. Glad you like it - many thanks πŸ™‚

  27. Everybody says:

    Sounds GREAT !

    . . . But FATALLY flawed unless you can affirmatively answer the following conundrum: when will Microsoft sell me a _single_ (i.e., retail) copy of a version of Windows 10 that does NOT include built-in SPYWARE, or non-security updates (i.e., Win10 Enterpise LTSB--a product you already make)?

    1. I understand your concerns, but turning down the hyperbole a little, the telemetry we gather is NOT spyware - it does not record your personal information nor the contents of your files, etc. It's all about figuring out what features users are using, where errors occur, and all to the goal of delivering an ever improving platform and OS.

      As to whether you'll be able to buy an LTSB type SKU - that'd be GREAT feedback to share via the Feedback Hub. OF course, no guarantees, but if you don't ask, you don't get!

  28. RTURD says:

    That's all good and stuff, but is anyone working on the Windows 10 bugs that plague both desktop and ESPECIALLY mobile?

    1. Of course. Be sure to submit feedback via the Feedback Hub on Desktop and/or Mobile: Your feedback gets routed directly to the feature owners who're able to diagnose, prioritize and schedule improvements.

  29. Byron Miller says:

    This is an awesome update! makes WSL much more useable!

    1. Glad you like it πŸ™‚ Keep the feedback coming!

  30. Richard says:

    That's great! Excitedly I uninstalled, [rebooted just in case] re-ran bash - it downloaded from windows store, extracted, installed and and its 14.04 trusty again. Any ideas?

    1. 99% sure it's because you're still running Anniversary Update. If you're on Creators Update, you'll get 16.04

  31. Jack says:

    Amazing work. A++

    Only thing left that really sucks about Windows now is the very unloved client development frameworks. If only MSFT would get this passionate about evolving the UI stack...

    1. There are some GREAT improvements in UWP app platform, and in the Direct Composition features giving apps greater control over more sophisticated UI layout & rendering options. And DirectX12 is pretty cool!!

      And, yes, work continues on all fronts - lots more cool stuff on the way w.r.t client app development πŸ˜‰

  32. Todd says:

    Is Windows 10 about to become a better Linux than Linux?

    I sincerely hope you guys keep up with the improvements and make a truly compatible Linux within Windows 10.

    1. Better Linux than Linux? I don't know if we'll ever reach that lofty goal - there are likely to be things that we'll simply never be able to do that full Linux can. However, we're enthusiastically trying to support all the scenarios, tools, syscalls, and features required for our core goal: To run all the dev tools you need to do your best work, and have the most fun ... on Windows πŸ™‚

  33. Gary says:

    Cool! Can I now run an sshd daemon using private key authentication?

  34. Tim Scarfe says:

    Amazing work team!

    1. Many thanks Tim πŸ™‚

  35. THX for this nice tutorial

  36. yce says:

    Hi,

    I'm getting an error while I'm trying to start apache2, which is the following:

    ----------------
    ➜ ~ sudo service apache2 start
    * Starting Apache httpd web server apache2
    *
    * The apache2 configtest failed.
    Output of config test was:
    apache2: ../sysdeps/posix/getaddrinfo.c:2603: getaddrinfo: Assertion `IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed.
    Aborted (core dumped)
    Action 'configtest' failed.
    The Apache error log may have more information.
    ----------------

    The apache error log doesn't seem have anything relevant.
    Is there any way to fix it? I've reinstalled fully the whole linux subsystem.

    1. Which OS build are you running, and which version of Ubuntu?

      1. Ed Kashuba says:

        Hi, Rich. I loved your appearance on Windows Weekly, BTW. So much so that you inspired me to try this out.
        Unfortunately, as soon as I started playing with it I ran into this exact same "IN6_IS_ADDR_V4MAPPED" problem. I get the error when I try to start Apache2 or ssh. I'm on the Creator's Update and I've upgraded to Ubuntu 16.04.

        1. Hi. Could you please file an issue on our GitHub & do please complete the default template bug report: https://github.com/Microsoft/BashOnWindows/

  37. Joe Healy says:

    great post. soco on me!

    1. ROFL πŸ™‚ Thanks Joe - will hold you to that! πŸ˜€

  38. Kenneth E Benson says:

    Still useless to me until usb devices will work in Bash.

    1. Funny you should say that - last week's Windows 10 Insider build included brand new support in WSL for USB storage devices and USB serial comms! Jump on the fast ring to give it a try!

      1. gojimmypi says:

        lsusb returns "unable to initialize libusb: -99".

        I'm on Windows 10 (10.0.14393 Build 14393)
        lsb_release -a
        No LSB modules are available.
        Distributor ID: Ubuntu
        Description: Ubuntu 14.04.5 LTS
        Release: 14.04

        1. 14393 is Anniversary Update which is now very old and missing LOTS of important functionality. I strongly encourage you to upgrade to Windows 10 Creators Update and upgrade or (better) nuke & reinstall your Linux instance so that you get Ubuntu 16.04.

          Alas, USB support wasn't in Creators Update either, but is emerging in the early post-Creators Update Insider builds.

  39. stevebor1 says:

    Pretty amazing stuff! Great work MS.

  40. Artem Russakovskii says:

    This is all very exciting, but one thing I was really disappointed to find out about is symlinks are still not cross-compatible between Linux and Windows one bit.

    Windows still can't read Linux-created symlinks - it sees the symlink (and even shows the file size of the file it points to on Linux), but it can't read it.

    Conversely, Windows-created symlinks don't even show up in Bash. Completely invisible.

    Can we hope for this to be resolved?

    https://plus.google.com/+ArtemRussakovskii/posts/79d1KnVN9Wb

    1. Yes, we do plan on making the Windows and Linux symlinks line up better in future releases. This mismatch is a scheduling issue combined with some surprising complexities we need to spend some time resolving.

  41. Elias Zare says:

    Sir!
    Great Job.
    Good Luck

  42. CSRedRat says:

    Nice! Please add unicode support. Fore test add to ~/.bashrc
    PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\]\342\234\223\"; else echo \"\[\033[01;31m\]\342\234\227\"; fi) $(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "
    Source ~/.bashrc and see unix invite string.

    Use apt without -get, example:
    sudo apt install apache2
    upstart in 14.04 cannot autostart apache2 and create folder for PID

    Use command "ip a" instead "ifconfig"

    Use True Color theme in Midnight Commander (mc): https://midnight-commander.org/wiki/NEWS-4.8.19

    1. More Unicode & UTF-8 support on the way
      You can already run apt without the -get if you wish - this is a distro thing, not a WSL thing
      Apache2 now works on WSL - start via "$ sudo service apache2 start"
      If you prefer ip, use it! πŸ™‚
      If you want to use MC's themes, go for it!

      1. CSRedRat says:

        Thanks for you reply, you do great work! πŸ˜‰ Good luck

  43. Raymond says:

    It's great that these impovements are coming to the Windows command line, but I feel like there are still way, waaaay too many features missing from it. What makes the Mac and Linux terminals so great is that they're really the complete package. They have tab support, auto-hiding scroll bars and many other little things that make them so comfortable for working in for long periods of time. I mean, it's sort of crazy that the Windows cmd app doesn't even let you dynamically resize text by pressing +/-!

    1. All of the features you list are on our backlog, but as I mentioned in the post, we're giving the console its biggest overhaul in > 30 years. One does not just bolt on a stack of features to something as core and critical as the Console, and hope for the best. We are nearing completion of some of the most important parts of the Console overhaul, so will be able to return to working on more visible improvements in future releases.

      Bear with us while we create a FAR more capable console for the future.

      In the meantime, while I think it safe to say that the Windows Console has improved leaps and bounds from where it was (i.e. unable to handle any VT sequences at all), there are several third party Consoles you might want to explore including ConEmu, Cmder, Console2, ConsoleZ, Hyper, etc.)

      1. Raymond says:

        Great news! πŸ˜€ I usually turn to Git-Bash, since I prefer Bash anyway, but since Git-Bash runs in a cmd-window... πŸ˜‰

        Anyways, thanks for your reply. So glad to hear that you're all thinking about these things as well. πŸ™‚ I feel like Ubuntu on Windows could become really great with these new features.

      2. L. says:

        Providing an api (sort of win32 ptys) to implement third-party alternatives to the win32 console would be a way to fullfill such requests. Otherwise, you will be stuck with providing a one-size-fit-all answer to an endless stream of (sometimes conflicting) requests.
        Console2, ConEmu & al are all using kind of hacky workarounds, with a hidden console, which is not nice.

        1. fpqc says:

          Miniksa said this is in the works, but zadjii said that it's prolly not going to be in RS3

  44. Vijay says:

    Nice, some really great improvements.
    One question, in the Windows Linux Interop section of the post you have a screenshot of creating and writing a file from WSL then opening it with Notepad.exe, is this now supported/recommended? As this blog post suggests it's not: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/
    Thanks

    1. It is entirely supported to access files stored in the Windows filesystem (e.g. c:\... or /mnt/c/...) via Windows or Linux tools.

      It is recommended NOT to access files stored under the root of your Linux filesystem using Windows tools.

  45. ulrichb says:

    Really great news!

    Can windows console programs also use VT100 sequences? If yes, do they need to opt-in in any way?

    1. Absolutely - as per the fine manual πŸ˜‰ (https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx)

      Output Sequences
      The following terminal sequences are intercepted by the console host when written into the output stream, if the ENABLE_VIRTUAL_TERMINAL_PROCESSING flag is set on the screen buffer handle using the SetConsoleMode flag. Note that the DISABLE_NEWLINE_AUTO_RETURN flag may also be useful in emulating the cursor positioning and scrolling behavior of other terminal emulators in relation to characters written to the final column in any row.

  46. I would like to be able to install Bash for Ubuntu on Windows once for all users, instead of separately for each user. I normally use an account with admin rights for administration and an ordinary user account for most other work (just as I do in Ubuntu and MacOS).

    I am looking forward to using the expanded features of BoUoW in the Creator's updatge.

    1. We only support installing a Linux instance for each user - if you want a single/shared multi-user Linux instance, you might want to consider running Linux in Hyper-V.

      The practice you describe above was recommended for XP users, but the introduction of UAC in Vista+ eliminated the need to have a separate admin account since normal, non-elevated processes do not have admin rights by default and require user action/authentication to elevate.

  47. Daniel Neely says:

    Are there any special/additional hazards related to an in place upgrade from Ubuntu 14.04 to 16.04 related to the WSL system; or is it just the same set that would be faced in upgrading a stand alone Ubuntu install?

    1. There are always hazards with in-place upgrades of any OS, but none specific only to a distro running on WSL.

      This said, it's possible that something you've got installed doesn't get upgraded correctly, and so you may end up chasing ghosts if you do find issues. Thus, it may be faster and safer over-all if you do a clean install.

  48. Ilango says:

    Really a lot of improvements!!

    sshd, nginx, Apache are supported now. Does that mean they are installed as system services and started up automatically? Or do we still need some workaround for automatic startup of sshd?

    1. You have to install them and start them manually (e.g. $ sudo service ssh start) : We don't yet support running background Linux daemons/services without an open Bash console.

      1. Tom says:

        I was really hoping these issues (2 links below) would be solved now within creators update 15063 (just installed).

        Adding autostartssh.vbs to Scheduler causing subsequent problems when trying to open another bash window after logging in are not the great fix that can make CygWin redundant for the sake of headless ssh/scp.

        https://github.com/Microsoft/BashOnWindows/issues/612
        https://wsl-forum.qztc.io/viewtopic.php?f=6&t=10

        If there are newer builds with solutions for me to check in this respect please let me know.

        1. Tom says:

          It's quicker to install and configure CygWin than apply current work-arounds. Shame.

          1. Though note that Bash/WSL does FAR more then Cygwin. Not dissing Cygwin here - it's a great tool and I use it daily too, but if/when you need to run genuine Linux tools, complex build toolchains, etc., WSL is your best bet.

        2. Remember, WSL is not a server-quality product yet. We've more engineering to do before we get there.

          And because WSL instances are per-user, they cannot startup before you've logged-in. And when you close your last Bash session, we tear-down all running Linux processes.

          We are (of course) working to improve WSL's features over time but in the meantime, you could just run OpenSSH on Windows instead: https://github.com/PowerShell/Win32-OpenSSH

          1. Tom says:

            Thanks for the suggestion, but I need it to run a few other Linux commands too, without me having to be interactively logged in, hence, CygWin.

          2. L. says:

            @Tom: You could run Win32 OpenSSH, and start bash.exe from there.

  49. Remo Harsono says:

    I'm using ConEmu now because I could not make windows console appear full screen, does this feature available now ?

    1. ALT + ENTER is your friend πŸ˜‰

  50. Chris says:

    A lot of great work went into these tools and I'm convinced they will prove to be a real boon for productivity on the Windows platform. As a developer I'm grateful this project even exists and we're all fortunate its turning out to be successful. But I think it's important to remember why a quality Linux subsystem on Windows is possible but the reverse is fraught with difficulty.

  51. Raymond Ji says:

    Awesome stuff! It's been really exciting following the progress, can't wait to see whats next πŸ™‚

    1. Ooh, we've got some fun stuff on the boil πŸ˜‰

  52. KΓ₯re Willoch says:

    Im seriously considering switching back to Windows again due to this project alone.

  53. Lac says:

    THANK YOU THANK YOU THANK YOU! don't stop:)

  54. Mubeen says:

    Great improvements, though I'm still struggling to get lsusb working; resulting in "unable to initialize libusb: -99"
    Would be good for my own sake to install adb android tools under this bash. Thank you

    1. Could you file a bug on this in https://github.com/microsoft/bashonwindows? Much more likely to be able to help you there than in these comments πŸ™‚ Thanks!

  55. Long time Microsoft-hater here, but I've got to say I really love what you're doing with this. I'd love to see it evolve into a deployment platform and not just a development platform. What I'd *really* love is to see it ported to Windows Server, and give us the ability to run UNMODIFIED Linux Docker containers on Windows Server. How cool would that be?

    1. Hi there. Thanks for taking the time to share your feedback - we really appreciate it!

      I’d love to see it evolve into a deployment platform and not just a development platform

      So would we πŸ™‚ We continue to work on many improvements throughout WSL with the goal of supporting ever more features and scenarios. The Server and Container scenarios are particularly popular asks, and are on our backlog, but we've got some work to do to get there. In particular, we have to figure out how to improve the richness of our networking support, disk IO perf, how to run system-wide daemons in the background at machine startup, etc.

      Bear with us we're running fast and working hard πŸ˜‰

  56. Adrian Dinu says:

    Hello Rich! I recently uninstalled the 14.04 image and installed the 16.04 one and noticed something strange and I was wondering if this was done on purpose or not. First of all, valgrind works now, which is GREAT, I can finally do my college assignments on wsl just as fine as on Ubuntu (I got it to work in 14.04 too but by building it from source though), and secondly, before upgrading to CU and 16.04, clear used to work in the expected way, it scrolled down so that the prompt was on the first line of the terminal and I could scroll up to see my previous commands, but now, when I try to scroll up after a clear, my previous commands/output are gone, it's like the terminal gets reset or something.

    1. Glad WSL is rocking your boat πŸ™‚ I believe the old behavior was erroneous (albeit occasionally useful) πŸ™‚

  57. DΕΌejnostin says:

    SYSTEM command behavior has changed (bug?)
    Consider following instruction: start /B php -f somefile.php > somefile.txt

    In previous version of Windows somefile.txt contains php script output, but in Creators Update it contains system command output!

    1. Can't repro on my Creators Update machine running Cmd:


      c:\temp>start /B git --version > somefile.txt

      c:\temp>type somefile.txt
      git version 2.11.0.windows.3

      c:\temp>

  58. _artem_ says:

    ms wtf? farmanager (in admin mode), bash as default shell... all seams to be cool... until you open phpstorm or vscode with TERMINAL SET TO USE BASH.. and you NOW (since that creators update) get error that you can't run simultaneously multiple bash instances with different rights. why you did that crap??? on AU it was working just fine.. and in CU you broke it. what for?

    1. why you did that crap

      We "broke it" because it's a potential security issue and we'd rather keep you safe.

      The challenge here is that all instances of a distro share the same session and there are potential risks with running a Linux binary (e.g. /bin/bash) with admin privileges inside a session with non-elevated binaries.

      The question I'd ask is why are you running any Linux process with elevated Windows permissions? That is a potentially very dangerous thing to do.

      1. _artem_ says:

        i do run "far manager" in admin mode, so i don't have issues copying into folders like program files (as far as i remember until win 8 you was just able to put any file in any folder, but then you had to be admin for that -> that's why i'm running file manager in admin mode)
        and since far (it's built ontop of cmd) - same as nc (norton commander under dos), vc (volkov commander), mc. and when i do bash -> it logins me with my "user" account. bash.exe is maybe launched as admin but it still uses the normal user inside.. so for some tasks i still have to use sudo to be able to run any stuff in wsl as root

        and i also use wsl in my IDEs but now i had to either run IDEs as admin or use far (file manager similar to total commander) in non admin mode.. and now i have hundreds of confirmations to do this and that on my drives. which is very annoying

        1. Artem: You don't understand what elevation does: if you elevate a process, it is given FULL ADMIN RIGHTS. Any process that you run elevated CAN DO WHATEVER IT LIKES to your hard drive, registry, etc., and can modify the contents of Program Files\*, Windows\* etc.

          I CANNOT RECOMMEND STRONGLY ENOUGH that you AVOID RUNNING APPLICATIONS ELEVATED AS ADMIN wherever possible. If you do need to elevate a process so that it/you can modify something in a protected area of the filesystem or registry, then be sure to close that app as soon as you're done.

          Ever wonder why XP was so easy to infect with malware, etc? It's because it lacked UAC (similar to sudo in Lunux) and users ran as local admin by default, thus, any app they ran had admin rights, and so malware was able to inject itself onto those machines.

          UAC masks-off the admin-rights bits from the SID's of users who are in Local Admin group. Thus, any standard process launched by Local Admin users gets cannot screw up core system files, OS components, machine-wide registry settings, etc. If, however, a process is launched elevated, its given full admin rights and you can but hope that it isn't malicious!

          Also, Far doesn't run atop Cmd. Cmd is a command-line shell and can launch GUI or command-line apps. When you launch Far from Cmd, a new Win32 process is started into which Far is loaded and executed. If you launch Far elevated with admin rights, it can do whatever it likes to your HDD.

          Similarly, Bash.exe is a command-line app through which you launch Linux's /bin/bash. Thus, if you launch Bash elevated, it launches /bin/bash elevated, and anything the user then launches runs elevated and all of these things are free to do anything they like to your hard drive.

          I hope you have a well tested backups & recovery system!

          1. mutwakel yassen says:

            I want to be able to type atom . in WSL and open Atom with the current directory.
            for rails development is this work now

            alias atom='/mnt/c/Windows/System32/cmd.exe /c "atom ."'

            in my .bashrc

          2. You don't need to invoke cmd first: If your Atom is on your Windows path, you could just run `atom.exe`. If you'd rather not type .exe every time, just alias `atom` to `atom.exe`. If atom is not on your path, alias `atom` to `<full path to atom.exe`

  59. Daniel Gordon says:

    This is going to get a lot of people to come back to Windows from Mac or Linux. Really looking forward to this. Thanks Microsoft πŸ™‚

    1. Thanks Daniel! πŸ™‚ Our aspirations are simple: Just allow devs to get their work done on Windows. Period. If that means Windows becomes a more productive platform for devs than other platforms, great πŸ˜‰

  60. I'm trying to remove and replace to upgrade to Ubuntu 16.04. However, I'm hitting error 0x80070003 when uninstalling, and error 0x80070091 when installing. Now I'm in a broken state where I can't uninstall (it just throws "The LX subsystem has an install or uninstall operation pending"), nor can I reinstall (I just get that error code every time). Any ideas?

    1. You need to reboot after enabling WSL and BEFORE running Bash otherwise WSL won't have been able to initialize and won't work correctly.

      To get you back in working state, I would:

      Disable WSL
      Reboot
      Delete the `%localappdata%\lxss` folder using Explorer / PowerShell / Cmd
      Re-enable WSL and reboot
      NOW run Bash from the command line to download and install Ubuntu

      Hope this helps

  61. Supervan says:

    Im having some issues regarding inotify, using W10 Creators

    1. When I change a PHP file, it still doesnt reflect the changes. I need to stop and start the Apache server. Anything i need to do?
    2. Im copy the files into ...var\www\test Apache is serving the web files from here. Do i need to mount a drive and use it as the source for the website?

    any recommodations will be apreciated

    1. Be sure you're not copying files into .../var/www/test using Windows tools (it's fine to do so from within Bash).
      I'd recommend storing your website files under `:\` and then configure Apache to find the website files under `/mnt//`

  62. Simon Lucent says:

    Hello.

    This may be a beginner question but what are you using to allow many applications to run under the same terminal in that screenshot where you seem to have htop, midnight commander, etc running?

    Thanks and great work!

    1. That, Simon, is tmux ... it's a terminal/console multiplexor - essentially provides a one or more virtual consoles, each in their own region of the host terminal/console. It's a little awkward to get started, but its an indispensable tool once you've gotten the knack πŸ™‚

      This is the main tmux site: https://wiki.archlinux.org/index.php/Tmux

      And if you want more, Brian Hogan (@bphogan on Twitter) has written a great book about Tmux: https://pragprog.com/book/bhtmux/tmux

    1. Hey Michael - HUGE fan of your work - thanks for running WSL through your tests πŸ™‚

      Yes - we're very aware of our disk perf and are working with several teams throughout the kernel to make improvements here over the next few releases. As you can imagine, changes deep in the IO stack need to be VERY carefully engineered and tested πŸ˜‰

  63. Fabian Iannarella says:

    Awesome product, WSL is changing my life!. Just wish that I could access and edit files in my homedir with Windows editors. Seems when I create files they don't show up in Linux land. πŸ™

    1. Yep - we'd love to be able to do this too! πŸ™‚ We're working on improving the filesystem interop in future releases.

  64. Kip Obenauf says:

    Awesome job guys! The progress your making is apparent. Windows is becoming more and more a great environment to develop in.

    If you haven't already seen it though, docker-compose.exe won't run correctly in bash. It turns out there's an issue with the version of python available where it doesn't support the code page of the Windows UTF-8, i.e. 65001. Docker-compose fails with errors like this:
    LookupError: unknown encoding: cp65001

    1. Thanks πŸ™‚

      Being tracked in this issue: https://github.com/Microsoft/BashOnWindows/issues/2009

      Please follow-along there for triage & eventual resolution.

  65. John Bussoletti says:

    I realize that the italicized note points out that X/GUI apps and desktops aren't explicitly supported, but are not prevented from attempting to run them. I am interested in trying to do so, but have been stymied by failure to initiate a 'startx' command. Is there any possible way from within the bash environment to launch an Xserver without interfering with the Windows interactions with the underlying video hardware? I installed xinit and have tried to invoke startx, but it fails complaining about an inability to transfer to the console server. Has anyone found a way to invoke a X server under WSL?

    1. You could create a bash alias for startx="/mnt/c/Program Files/.../xserver.exe" (filling out the path and correcting the name of your x server app.

  66. volker01 says:

    Since the Creators Update, the cmd crashes the layout of the Logoff/Shutdownscripts!!! The scripts run, but i can't see anything IN the cmd window! (gpo: Show Logoffscripts = yes) The settings-dialog of the cmd windows also crashes, no text is displayed. My - interaktive backup.cmd doesn't work!

    1. Thanks for the report. Could you please follow the instructions & file a bug on our GitHub repo here: https://github.com/microsoft/bashonwindows

      1. volker01 says:

        Now i have the solution for my problem:
        It's not an cmd Problem!
        It's the Service:
        Energy Server Service queencreek (ESRV_SVC_QUEENCREEK).
        (Intel(r) Energy Checker SDK. ESRV Service queencreek)
        Stopped the Service. And all looks fine!
        Volker

  67. fred3x says:

    How do I access remote shares from wsl?

    I have X: mapped to a share on another device, from which I need to copy a bunch of files for a Linux program I want to compile on WSL, but "ls /mnt/" shows only C and d.

    I'd use scp, but there is some issue where the two ssh tools won't talk to each other due to encryption conflicts, that I don't want to take the time to troubleshoot right now.

    Suggestions welcome!

    thanks in advance.

    Fred

    1. We only mount fixed drives into your Linux instance by default. If you'd like to mount a network share, install the latest Insiders build and follow the instructions here: https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/

      To SSH, you must be running sshd configured with the appropriate server keys and/or authn settings.

      1. fred3x says:

        Thanks, Rich!

        For mounting network drives, is 16193 recent enough, or does it require 16199? (I'm currently on the slow ring while I rebuild after a--for me, at least--non-recoverable failure of 16199, and am not ready to go back to the fast ring yet).

        thanks again!

  68. Daniel Ridings says:

    It was already really good. Now I am feeling secure with the idea that this has come to stay. That makes me real happy. I was never an avid Windows fan, I am really warming up πŸ™‚

    1. Glad we're winning you over πŸ™‚

  69. jvirdi says:

    Thanks for bringing Ubuntu on Windows, this is really helpful. But I need your help installing gcc compiler on my Ubuntu (running on windows). For some reason I am unable to compile simple C program in bash. The Error that I am getting when installing gcc on bash
    Err:1 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc-dev-bin amd64 2.23-0ubuntu7
    404 Not Found [IP: XXX]
    Ign:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 linux-libc-dev amd64 4.4.0-79.100
    Ign:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc6-dev amd64 2.23-0ubuntu7
    Err:1 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc-dev-bin amd64 2.23-0ubuntu7
    404 Not Found [IP: XXX]
    Err:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 linux-libc-dev amd64 4.4.0-79.100
    404 Not Found [IP: XXX]
    Err:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libc6-dev amd64 2.23-0ubuntu7
    404 Not Found [IP:XXX]
    E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu7_amd64.deb 404 Not Found [IP: XXX]

    E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-79.100_amd64.deb 404 Not Found [IP: XXX]

    E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu7_amd64.deb 404 Not Found [IP: XXX]

    E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

    Can you please help in this?

    Thanks

    1. You should ensure you have internet access and then run the following - looks like your APT package sources are unreachable.

      sudo apt update
      sudo apt upgrade

      Then install gcc - in fact, I'd recommend installing `build-essential`.

      You might want to follow along with Scott Hanselman's guide to getting started with WSL: https://blogs.msdn.microsoft.com/commandline/2016/07/01/hanselman-takes-a-tour-around-bash-on-windows/

  70. I have install VSCODE in my Linux subsystem(WSL) but I unable to launch it ,I think,since it has no privileges to access graphic driver calls directly it cannot up and run required Graphic Elements.
    Any good solution to execute simple GUI application such as gEdit,VSCode without haiving Xserver like application on windows side?

    1. If you want to edit your code in VSCode & build/run from within WSL:
      1. Install VSCode for Windows
      2. Create/clone your project into a Windows folder, e.g. c:\dev\project1
      3. Navigate to that folder in Linux: $ cd /mnt/c/dev/project1
      4. Open that project in VSCode: $ code .

Skip to main content