Bash on Ubuntu on Windows
This is a quick intro to – and some personal notes on working with – Bash in Windows 10 (Anniversary Update or Insider build requred). This will be updated on a sporadic basis.
Information on Bash
What is Bash on Ubuntu on Windows?
Bash on Ubuntu on Windows is part of the "Windows Subsystem for Linux" (WSL). Read more over at the WSL MSDN page. This page also covers installation guide, command reference, account permissions, interoperability, FAQ and release notes.
WSL developments and news
Recent (October, 2016) noteworthy news:
Official Ubuntu 16.04 support. Ubuntu 16.04 (Xenial) is installed for all new Bash on Ubuntu on Windows instances starting in build 14951. This replaces Ubuntu 14.04 (Trusty). Existing user instances will not be upgraded automatically. Users on the Windows Insider program can upgrade manually from 14.04 to 16.04 using the do-release-upgrade command.
Windows / WSL interoperability. Users can now launch Windows binaries directly from a WSL command prompt. This is the number one request from our users on the WSL User Voice page. Some examples include:
export PATH=$PATH:/mnt/c/Windows/System32
notepad.exe
ipconfig.exe | grep IPv4 | cut -d: -f2
ls -la | findstr.exe foo.txt
cmd.exe /c dir
Report issues and vote for new features
Using Bash
Enter bash
You can run bash
in a terminal window to enter the Linux subsystem. Or you can launch the "Bash on Ubuntu on Windows" application from the start menu.
Using sensible colors
I don't know if I'm not oldtimer enough, but the default colors sceheme in bash is simply hideous and quite painful to look at.
Here's one guy's solution to this problem. I'll update this page with whatever solution I find the best suitable.
Issues I've come across
In short, interoperability (except launching applications) between WSL/Windows doesn't seem to work:
- Symlinking files between WSL and /mnt/c won't work
- Modifying files in WSL from Windows will break things
However, it's fine to modify files stored in your Windows filesystem from within bash. So if you were in /mnt/c/dev/project
and launched code.exe ./
, Visual Code would open the current folder.
Managing the WSL installation
Re-install the Linux subsystem
From cmd.exe with Administrator privileges:
# Uninstall
lxrun /uninstall /full
# Reinstall
lxrun /install.
Update Ubuntu
This equals an apt update && apt dist-upgrade -y
:
lxrun /update
Set default user
lxrun /setdefaultuser <userName>
Which version of Ubuntu am I running?
$ lsb_release -a
No LSB modules are available
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
Access WSL from Windows (read-only access)
C:\Users\<windows_username>\AppData\Local\lxss\home\<linux_username> # user home
C:\Users\<windows_username>\AppData\Local\lxss\rootfs # root
Access Windows from WSL (write access)
/mnt/c
Run bash command from cmd.exe
Runs the command, prints the output and exits back to the Windows command prompt.
bash -c "<command>"
Python development
Install pip: `apt-get install python-pip`