After the release of Windows Terminal, the entire technology circle was immediately detonated, and major social media spread their news. On the day of its release, it quickly became the first in the GitHub trend list, and even its issue area was crowded with people. However, after I watched the relevant materials and videos, I felt that it was not so exciting.
Most authors on the web view Windows Terminal as the savior of the command line experience under Windows 10. I think it is time to splash a cold water to cool down.
What is Windows Terminal?
Windows Terminal is a more beautiful and powerful terminal tool built on top of the original CMD, Powershell, and Windows for Linux (WSL) of the Windows 10 operating system. Strictly speaking, it is a terminal that is set on top of the CMD and Powershell.
The difference between a terminal and a shell:
In the command line, the shell provides access to the operating system kernel features, such as bash, zsh, which we are familiar with, are different shells. The terminal provides a visual interface (window) for the shell, such as the familiar iTerm2, terminal tools on the Linux desktop, and so on.
Even the command line we use in VSCode is a terminal in some sense. The CMD and Powershell we use under Windows 7/10 are a terminal, a shell, and a scripting system with the same name.
Simply put, Windows Terminal is just a terminal, not a more useful shell.
Why is Windows Terminal not a savior?
As a terminal, Windows Terminal is undoubtedly qualified, it provides very powerful features, and the powerful engineering capabilities from Microsoft also allow it to attract more attention.
What am I spitting when I slot on the Windows command line?
Both command line interfaces (CMD & Power Shell) under Windows 7/10 have their own problems.
- CMD is too old and many features are not complete.
- Although the Power Shell is powerful, it has a very bad experience. Unreasonable command syntax, a large number of lengthy, camel-styled commands and parameters make the user’s operation extremely inconvenient.
If there isn’t a shell that is good enough, the best terminal is nothing more than a beautiful coat.
For Windows developers, what is really needed is a more powerful shell that helps them use Unix-style command line tools.
Windows Terminal + Windows Subsystem for Linux ？
At the Microsoft Build 2019 conference, in addition to Windows Terminal, Microsoft also released Windows Subsystem for Linux 2 (WSL2). The new generation of WSL2 provides a complete Linux kernel and better system support than the previous generation. It seems that the combination of Windows Terminal and WSL is perfect, but it is too cumbersome to use as a shell.
WSL 2 provides a simpler, easier-to-use virtual machine for Windows 10. You no longer need to install Virtual Box or VMWare. A Windows Subsystem for Linux can satisfy most of the developer’s needs.
However, this does not completely solve the problem. Even if WSL 2 is better, it is just a subsystem that runs on a Windows OS. Essentially it doesn’t do much more than a virtual machine.
From the developer’s point of view, what is Microsoft really supposed to do?
As an eco-creator, what Microsoft really needs to do is to create a shell that can compete with Unix Shell in terms of experience and ecology, or simply provide native support for common shells such as Bash and Zsh (WSL supports Bash, Zsh, etc., but Users still need to enter WSL before they can use it. You can imagine what it would be like if CMD became Bash?).
What is a good shell? Only the eco-builder places a well-perfected shell at the core of the operating system, without the developer having to install and configure it.
If Microsoft can provide a shell that is good enough, I believe that applications like Windows Terminal will spring up in the open source community.
- Introducing Windows Terminal: https://devblogs.microsoft.com/commandline/introducing-windows-terminal/
- Install WSL 2: https://docs.microsoft.com/en-us/windows/wsl/wsl2-install
- Announcing WSL 2: https://devblogs.microsoft.com/commandline/announcing-wsl-2/