Windows 10 Goes to Shell
Windows 10 — the operating system people love to hate or hate to love. Even if you’re a Linux die-hard, it is a fair bet that your workplace uses it and that you have friends and family members that need help forcing you to use Windows at least some times. If you prefer a command line — or even just find a place where you have to use the command line, you might find the classic Windows shell a bit anemic. Some of that’s the shell’s fault, but some of it is the Windows console which is — sort of — the terminal program that runs various Windows text-based programs. If you have the creator update channel on Windows 10, though, there have been some recent improvements to the console and the Linux system that will eventually trickle down to the mainstream users.
So what’s new? According to Microsoft, they’ve improved the call interface to make the following things work correctly (along with “many others”):
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
The changes to the console are mostly surrounding escape sequences, colors, and mouse support. The API changes included things like allowing certain non-administrative users to create symlinks. We’ve made X Windows work with Windows (using a third-party X server) and Microsoft acknowledges that it has been done. However, they still don’t support it officially.
Linux follows — more or less — basic precepts set forth by the Unix operating system. While it has grown over time, Unix was built to run on computers that are not terribly different from a modern computer. True, the PDP-7 was an 18-bit computer but it didn’t have the stifling quasi-8 bit architecture that MSDOS grew up in. MSDOS, on the other hand, was battling quite a few hardware limitations. But MSDOS eventually got a shell called Windows. Then Windows turned the tables and became the operating system that could run MSDOS. But this led to a hodgepodge of issues, not the least of which is the shell was anemic. There have been several answers to this. Even back in MSDOS days, third-party shells like 4DOS were popular, not to mention Unix-like shells available with Cygwin, MKS, and similar tools. Modern Windows still has an anemic MSDOS shell, but also PowerShell and the WSL bash shell.
That different heritage has led to a pretty big disparity between the standard shell and even the simplest Linux shell. Of course, you can run Windows under virtualization on Linux or vice versa. This, however, should perform better since it is essentially reverse Wine (that is, a layer on Windows that runs Linux just as Wine is a layer on Linux that runs Windows).
There’s also a new Windows Terminal application to manage all the shells with tabs and font support for emoji — because apparently, that’s important. You can see a flashy commercial for it in the video below.
Between having so many browser-based applications and now having a bash shell on just about everything, it is getting where you almost don’t care what CPU you are using or even what operating system. While that’s good for us, it probably isn’t good for Microsoft. Perhaps they figure they make most of their money from corporations and think this strategy will stop corporate developers from adopting open operating systems? We aren’t sure it is all that great for Linux, either, as it dilutes one of its big advantages — a wide range of tools for serious users and developers.
Just to head off the pedantic comments, we know that Linux is the kernel and the operating system is the kernel plus tools from GNU and others. But colloquially, people say Linux and so do we. While Linux is “free” — if you are supporting it and your time has any value, that’s not totally true. You can pay someone like Red Hat for your support, but then having Microsoft support is one of Windows selling points — most of the time.
If you are not running Windows 10, want painless X Windows, or just don’t want to use the Microsoft tools, there’s always Swan which is based on Cygwin. As for me? My main operating system is Emacs. Don’t tell Elliot.