Everything You Can Do With Windows 10’s New Bash Shell

Windows 10’s Anniversary Update added support for Linux environments to Windows 10 back in 2016. But don’t be deceived: this is more than just a Bash shell. It’s a full compatibility layer for running Linux applications on Windows.

We’ve covered a lot of the things you can do in Windows 10’s new Bash shell, so we’ve rounded up all those guides into one mega list here, for your convenience.

Getting Started with Linux on Windows

RELATED: How to Install and Use the Linux Bash Shell on Windows 10

You can install a Linux environment and Bash shell on any edition of Windows 10, including Windows 10 Home. However, it does require a 64-bit version of Windows 10. You just have to enable the Windows Subsystem for Linux feature, and then install your chosen Linux distribution—for example, Ubuntu—from the Windows Store.

As of the Fall Creators Update in late 2017, you no longer have to enable developer mode in Windows, and this feature is no longer beta.

Install Linux Software

RELATED: How to Install Linux Software in Windows 10’s Ubuntu Bash Shell

The easiest way to install Linux software in your Ubuntu (or Debian) environment is with the apt-get command. (The apt command also works.) This command downloads and installs software from Ubuntu’s software repositories. You can download and install one or more applications with just a single command.

As this is a more-or-less full Ubuntu userspace environment, you can also install software in other ways. You can compile and install software from the source code just as you would on a Linux distribution, for example.

If you’ve installed another Linux distribution, use the commands for installing software on that specific distribution instead. For example, openSUSE use the zypper command.

Run Multiple Linux Distributions

RELATED: What’s the Difference Between Ubuntu, openSUSE, and Fedora on Windows 10?

The Fall Creators Update also enabled support for multiple Linux distributions, where previously only Ubuntu was available. Initially, you can install Ubuntu, openSUSE Leap, SUSE Linux Enterprise Server, Debian GNU/Linux, or Kali Linux. Fedora is also on the way, and we’ll probably see more Linux distributions offered in the future.

You can have multiple Linux distributions installed, and you can even run multiple different Linux environments at the same time.

If you’re not sure which to install, we recommend Ubuntu. But, if you need a particular Linux distribution—maybe you’re testing software that will run on a server running SUSE Linux Enterprise Server or Debian, or you want the security testing tools in Kali Linux—they’re available in the Store alongside Ubuntu.

Access Windows Files in Bash, and Bash Files in Windows

RELATED: How to Access Your Ubuntu Bash Files in Windows (and Your Windows System Drive in Bash)

Your Linux files and Windows files are normally separated, but there are ways to access your Linux files from Windows and your Windows files from the Linux environment.

Linux distributions you install create a hidden folder where all the files used in that Linux environment are stored. You can access this folder from Windows if you want to view and back up Linux files with Windows tools, but Microsoft warns that you shouldn’t modify these Linux files with Windows tools, or create new files here with Windows applications.

When you’re in the Linux environment, you can access your Windows drives from under the /mnt/ folder. Your C: drive is located at /mnt/c and your D: drive is located at /mnt/d, for example. If you want to work with files from within the Linux and Windows environments, place them somewhere in your Windows file system and access them through the /mnt/ folder.

Mount Removable Drives and Network Locations

RELATED: How to Mount Removable Drives and Network Locations in the Windows Subsystem for Linux

The Windows Subsystem for Linux automatically mounts fixed internal drives under the /mnt/ folder, but it doesn’t automatically mount removable drives like USB drives and optical discs. It also doesn’t automatically mount any network drives that may be mapped on your PC.

However, you can mount these yourself and access them in the Linux environment with a special mount command that takes advantage of the drvfs file system.

Switch to Zsh (or Another Shell) Instead of Bash

RELATED: How to Use Zsh (or Another Shell) in Windows 10

While Microsoft originally pitched this feature as a “Bash shell” environment, it’s actually an underlying compatibility layer that allows you to run Linux software on Windows. That means you can run other shells instead of Bash, if you prefer them.

For example, you can use the Zsh shell instead of Bash. You can even have the standard Bash shell automatically switch to the Zsh shell when you open the Linux shell shortcut in your Start menu.

Use Bash Scripts on Windows

RELATED: How to Create and Run Bash Shell Scripts on Windows 10

Thanks to this environment, it’s actually possible to write a Bash shell script on Windows and run it. Your Bash script can access your Windows files stored under the /mnt folder, so you can use Linux commands and scripts to work on your normal Windows files. You can also run Windows commands from within the Bash script.

You can incorporate Bash commands into a Batch script or PowerShell script, which is pretty handy. For all this and more, see our guide to bash scripts in Windows 10.

Run Linux Commands From Outside the Linux Shell

RELATED: How to Run Linux Commands From Outside the Bash Shell on Windows 10

If you just want to quickly launch a program, execute a command, or run a script, you don’t even need to launch the Bash environment first. You can use the bash -c or wsl command to execute a Linux command from outside the Linux shell. The Linux environment simply runs the command, and then quits. If you run this command from within a Command Prompt or PowerShell window, the command prints its output to the Command Prompt or PowerShell consoles.

You can do a lot with bash -c or wsl. You can create desktop shortcuts to launch Linux programs, integrate them into batch or PowerShell scripts, or run them any other way you’d run a Windows program.

Run Windows Programs From Bash

RELATED: How to Run Windows Programs from Windows 10’s Bash Shell

As of the Creators Update (which came out in Spring 2017), you can run Windows programs from within the Linux environment. This means you can integrate Windows commands alongside Linux commands in a Bash script, or just run Windows commands from the standard Bash or Zsh shell you may already be using.

To run a Windows program, type the path to an .exe file and press Enter. You’ll find your installed Windows programs under the /mnt/c folder in the Bash environment. Remember, the command is case-sensitive, so “Example.exe” is different from “example.exe” in Linux.

Run Graphical Linux Desktop Programs

RELATED: How to Run Graphical Linux Desktop Applications from Windows 10’s Bash Shell

Microsoft doesn’t officially support graphical Linux software on Windows. The Windows Subsystem for Linux feature is intended for running command-line programs developers might need. But it’s actually possible to run graphical Linux desktop programs on Windows using this feature.

This won’t work by default, however. You’ll need to install an X server and set the DISPLAY variable before graphical Linux desktop programs will run on your Windows desktop. The simpler the application, the more likely it is to work well. The more complex the application, the more likely that it’ll try to do something Microsoft’s underlying Windows Subsystem for Linux doesn’t yet support. All you can do is give it a shot with these instructions and hope for the best.

Choose Your Default Linux Environment

RELATED: How to Set Your Default Linux Distribution on Windows 10

If you have multiple Linux distributions installed, you can choose your default installation. This is the distro used when you launch the Linux distribution with the bash or wsl command, or when you use the bash -c or wsl commands to run a Linux command from elsewhere in Windows.

Even if you have multiple Linux distros installed, you can still launch them directly by running a command like ubuntu or opensuse-42. The exact command you’ll need is spelled out on each Linux distribution’s download page on the Microsoft Store.

Quickly Launch Bash From File Explorer

RELATED: How to Quickly Launch a Bash Shell From Windows 10’s File Explorer

You don’t have to launch the Linux shell from its shortcut icon. You can quickly launch it from within File Explorer by typing “bash” into the address bar and pressing Enter. Your default Linux distribution’s Bash shell will appear, and the current working directory will be the directory you had open in File Explorer.

That article also provides instructions for adding an “Open Bash shell here” option to File Explorer by editing the Windows Registry, giving you a convenient context menu option that works similarly to the “Open PowerShell window here” or “Open Command Prompt here” options.

Change Your UNIX User Account

RELATED: How to Change Your User Account in Windows 10’s Ubuntu Bash Shell

When you first set up Bash, you’re be prompted to create a UNIX user account and set a password. You’re be automatically signed in with this account each time you open the Bash window. If you want to change your UNIX user account—or use the root account as your default account in the shell—there’s a hidden command for changing your default user account.

Uninstall and Reinstall a Linux Environment

RELATED: How to Uninstall (or Reinstall) Windows 10’s Ubuntu Bash Shell

After you’ve installed some programs or changed some settings, you might want to reinstall Ubuntu or another Linux distribution and get a fresh Linux environment. This was previously a little complicated, but you can now do it simply by uninstalling the Linux distribution like you would any other application and then reinstalling it from the Store.

To get a fresh system without redownloading the Linux distribution, you can run the distribution’s command along with the “clean” option from a Windows Command Prompt or PowerShell console. For example, to reset Ubuntu without redownloading it, run ubuntu clean .

If you still have an older Linux environment installed—one that was installed prior to the Fall Creators Update—you can still uninstall it with the lxrun command.

Upgrade Your Ubuntu Environment

RELATED: How to Update the Windows Bash Shell to Ubuntu 16.04

After the Windows 10’s Fall Creators Update, you now have to install Ubuntu and other Linux environments from the Store. When you’ve do that, they’ll be automatically updated to the latest versions without any special commands.

However, if you created a Bash environment on an older version of Windows, you’ll have an older Ubuntu environment installed. You can just open the Store, and install the newest Ubuntu from the Windows Store to upgrade.

Enterprising geeks will no doubt figure out other interesting things you can do with the Linux environment in the future. The Windows Subsystem for Linux will hopefully continue getting more powerful, but don’t expect Microsoft to officially support graphical Linux desktop applications any time soon.

Chris Hoffman is a technology writer and all-around computer geek. He's as at home using the Linux terminal as he is digging into the Windows registry. Connect with him on Twitter.