Windows Subsystem for Linux, or WSL, is one of the most exciting software projects that have come along. While Microsoft Windows and Linux were once considered bitter enemies, you can now run full-fledged Linux apps on your Windows system without dual-booting or setting up a virtual machine.

If you're using WSL, how can you make it even better?

1. Get Windows Terminal

windows terminal

While you'll get a terminal window when you install a Linux distribution from the Microsoft Store, there are better options for your terminal.

One of them is Microsoft's own Windows Terminal. This application includes a lot of the features that you expect from other modern terminal emulators, including tabbed windows. Windows Terminal not only handles Linux but also PowerShell and the good old Command Prompt.

It's still a little rough around the edges. You have to edit your settings in a ".json" file. If you're a heavy command line user, you will probably be comfortable editing configuration files anyway.

Download: Windows Terminal

2. Change Your Shell

On most Linux distributions, including Ubuntu, the default shell is Bash. There's nothing wrong with it, but experienced Linux users are often unsatisfied with the way the system comes out of the box. Everyone likes to tweak it, and the shell is no exception.

One popular bash alternative in the Unix/Linux world is zsh. It's already the default shell in Apple's macOS. You can easily switch to a different shell in one command.

On most Linux distributions, zsh is not installed by default. In Ubuntu, you can install it using apt:

        sudo apt install zsh
    

To change your shell to zsh in Ubuntu WSL, type:

        chsh -s /usr/bin/zsh
    

The location of the shell that you want to use might be different if you're using another distro. You'll be prompted for your password to change the shell. To find the location of your shell, type:

        which zsh
    

If you want to use a different shell, you should replace zsh with the name of that shell.

Related: Which Linux Shell Is Best? 5 Common Shells Compared

3. Access Windows and Linux Files

linux directory explorer wsl

Not only does WSL enables you to run Windows and Linux programs side by side, it also helps in accessing files on the Windows and Linux systems simultaneously.

This is really handy for development projects. You can edit a program in a Windows editor and test it in a Linux window.

The Windows file system is mounted on the Linux side in the /mnt/[drive letter] directory. If your Windows drive is C, it will be /mnt/c. You can access all your Windows files using standard Linux commands this way.

Accessing the Linux filesystem from Windows is also easy. It's visible under the \\wsl$ hierarchy in Windows Explorer. Windows sees the Linux system as a network drive. If you have Ubuntu 20.04 installed, it will be \\wsl$\Ubuntu-20.04.

To open up an Explorer window of the current directory type:

        Explorer.exe .
    

4. Upgrade to WSL 2

WSL distro list

In 2020, Microsoft introduced WSL 2. The main improvement over WSl 1 is its use of an actual Linux kernel, delivered via Windows update. This improves performance, as the kernel executes Linux system calls instead of having to translate them into Windows system calls.

To upgrade to WSL 2, all you have to do is issue a few commands. First, you activate the hypervisor. Open a PowerShell window as an administrator and type:

        dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    

Then restart your machine.

Next, you'll need to download the Linux kernel. Get the package from Microsoft's website and run the installer.

Download: Linux Kernel for WSL

Now you'll want to set version 2 as the default for any distributions you'll install in the future:

        wsl --set-default-version 2 
    

But you'll want to upgrade any existing installations to WSL 2. Fortunately, that's also pretty easy.

To see which distributions you have installed, type:

        wsl --list 
    

If you want to set your Ubuntu 20.04 installation to WSL 2, use the --set-version option:

        wsl --set-version Ubuntu-20.04 2 
    

Now you'll be running WSL 2 with all of its advanced features on your current and future installations, and the kernel will be upgraded with Windows Update, just as with any other drivers on your system.

5. Gather Your Tools

Linux remains popular among developers due to the staggering amount of programming tools, such as editors, compilers, IDEs, server software, etc. that are available on the platform.

It's easy to equip your new WSL-based installation with your favorite tools as it is on other systems. All you have to do is use the standard package manager that comes with your system.

On Debian and Ubuntu, it's apt. On SuSE, It's YaST. On Alpine, it's APK. The point is, you'll find everything you need to run your favorite development projects on WSL as you would on a conventional Linux installation.

If you're a C programmer, Debian and Ubuntu include a package called build-essential that consists of the GCC compiler, the C library, the Make utility, and package development tools. It's really intended for people working on the distribution itself, but also handy for general C development.

To install it, you just use an APT command:

        sudo apt install build-essential
    

It pays to browse the package listings to make sure your favorite tool is there and perhaps find some new ones.

6. Managing Services

Apache starting up in Ubuntu WSL

While most of the time in WSL you'll be running regular commands, sometimes you might need to start and stop services. You might be developing a web application and need to test it using a web server.

Fortunately, it's easy to start and stop services, just as you would on any other Linux distribution.

It's a little different in Ubuntu under WSL, because it doesn't use systemd to manage its services, but uses the service utility, which uses the older System V-style init scripts to manage services.

If you want to start the Apache server, you'd just issue this command:

        sudo service apache 2 start
    

This will launch the Apache server. You can check the running services using the top command and see apache2 in the list of processes.

Stopping the Apache server is just as easy:

        sudo service apache 2 stop
    

7. Explore Different Distros

ubuntu and alpine in wsl

A lot of the fun of WSL comes from the way you can run different distros at the same time, so why not take advantage of running something less-known like Alpine Linux alongside Ubuntu, openSUSE, or Debian? Perhaps you might find your new favorite. If you like a distribution, you can set it as your main distro using the --set-default flag:

        wsl --set-default distro-name
    

...where distro-name is the name of the system you want to change to.

Related: Linux Distros You Can Install in Windows Subsystem for Linux

Exploring Windows Subsystem for Linux

WSL has a lot of options for exploring the new world combining Linux and Windows. It seems that there's always something new to discover. You can change the shell, change the terminal, start and stop services, and check out different distros.

The Windows Subsystem for Linux has lots of features that are quite different from a Linux distribution. But you can still benefit from using WSL as it allows you to quickly access a Linux system from your Windows machine.