大家都在點贊 Windows Terminal,我決定給你潑一盆冷水

小白發表於2019-05-08

Windows Terminal 釋出以後,立刻引爆了整個技術圈,各種社交媒體上紛紛傳播著它的訊息,它開源的 GitHub 倉庫的星標數一路飆升,迅速成為當日 GitHub 趨勢榜的首名,甚至連它 issue 區都擠滿了人——以至於專案運營團隊緊急出場管理。不過,在我觀看了相關的資料和視訊以後,感覺並沒有那麼令人興奮。

在我看到一時間出現的很多文章,都視 Windows Terminal 為 Windows 下命令列體驗的救世主之後,我覺得,是時候潑一盆冷水降降溫了。

大家都在點贊 Windows Terminal,我決定給你潑一盆冷水

Windows Terminal 專案下的討論

Windows Terminal 是什麼?

在潑冷水之前,我想先來介紹一下 Windows Terminal 是什麼,以方便你理解我的觀點:Windows Terminal 是一個套在 Windows 作業系統原本的 CMD、Powershell、Windows Subsystem for Linux(WSL)之上的一個介面更加漂亮、功能更加強大的終端工具。嚴格來說,它是套在 CMD 、Powershell 之上的一個終端。

Windows Terminal 效果圖

Powershell on Windows Terminal。圖片來源:https://devblogs.microsoft.com/commandline/introducing-windows-terminal/

這裡需要了解一下終端terminal和 shell 的區別:

在命令列中,shell 提供了訪問作業系統核心功能的途徑,比如說我們所熟悉的 bash、zsh,都是不同的 shell;而終端則為 shell 提供視覺介面(視窗),比如我們所熟悉的 iTerm2、Linux 桌面上的終端工具等。甚至於我們在 VSCode 中所使用的命令列,也是某種意義上的終端。

我們在 Windows 下所使用的 CMD、Powershell 既然是一個終端,也是一個 Shell,還是同名的指令碼系統。

但是,它也只是一個終端而已,而不是一個更加好用的 Shell

為什麼 Windows Terminal 不是救世主?

作為一個終端,Windows Terminal 無疑是合格的,它提供了非常強大的功能,來自微軟的強大工程能力也讓它能夠吸引更多的眼球。

大家都在點贊 Windows Terminal,我決定給你潑一盆冷水

Cmder 效果圖。圖片來源:Cmder 官網

但是,如果僅僅是一個終端,其實開源社群早已有更多的解決方案,比如 cmderConEmuHyper 等等,這些 Terminal 也足夠好看和好用。

 ConEmu 效果圖

ConEmu效果圖。圖片來源:ConEmu 官網

這種第三方就可以做好的事情,微軟官方的進入不過是在現有的命令列生態下提供更多的一種選擇,而不是真正的問題解決方案。

當我們吐槽 Windows 命令列時,我們在吐槽什麼?

那麼我們是對什麼不滿意呢?Windows 使用者所吐槽的命令列不好用不在於其表面,而在於其沒有一個足夠好用的 Shell。 Windows 下的兩個命令列介面都各有自己的問題,CMD 因為時間久遠,很多功能不齊全。而 Power Shell 雖然功能強大,但不合理的命令語法,大量冗長的、駝峰式命名的命令和引數使得使用者的命令操作極為不便,體驗極差。如果沒有一個足夠好用的 Shell ,無論換了多少外面的終端,無非是披了一個閃閃發光的、半透明的漂亮外衣罷了。

對於開發者們來說,真正希望 Windows 做的,不是一個更漂亮的終端。漂亮的終端只能讓他們一時新鮮,但是如果希望開發者們真正感覺到 Windows 命令列好用,就需要提供一個更加強大的 Shell,幫助開發者能夠用上 Unix 式的命令列工具。

Windows Terminal + Windows Subsystem for Linux ?

在 Microsoft Build 2019 大會上,除了 Windows Terminal 以外,還發布了 Windows Subsystem for Linux 2(WSL2)。新一代的 WSL 相比於上一代,提供了完整的 Linux 核心,將會提供更好的系統支援。看起來,Windows Terminal 和 WSL 的結合,已經非常完美了,但作為一個 Shell 來用的話,又顯的過於笨重。

WSL 2 所提供的,不過是一個更加簡單、更加易用的 Windows 下的虛擬機器,你不再需要安裝 Virtual Box、VMWare 而已,一個 Windows Subsystem for Linux 就可以滿足開發者的大部分需求。

但是,這並不能解決問題,這治標不治本的選擇。WSL 無論做的再怎麼好,無法擺脫它只是一個執行於 Windows 系統中附屬的子系統。無論 WSL 做的再好,本質上並沒有比虛擬機器做的更多。

作為一個開發者,我認為什麼才是微軟真正應該做的?

Windows Love Linux

Windows Love Linux。圖片來源:https://cloudblogs.microsoft.com/windowsserver/2015/05/06/microsoft-loves-linux/

作為 Windows 系統的開發者,微軟真正的價值顯然不是做一個終端那麼簡單。作為生態的打造者,微軟真正可以做好的是,打造一個能夠在體驗和生態上與 Unix Shell 一致的 Shell,或者是乾脆提供 Bash、Zsh 等常用 Shell 的原生支援(WSL 雖然支援 Bash、Zsh等,但依然是需要先進入 WSL 才能使用,但你可以暢想一下,如果 CMD 變成了 Bash,會是什麼樣的呢?)。這些事情是第三方開發者所無法做的更好的,只有生態的構建者在一開始就將一個體驗良好的 Shell 放置在系統的核心,無需開發者自行安裝、配置,才能夠讓開發者真正擁有一個好的命令列體驗。如果微軟能提供一個足夠好用的 Shell,我相信類似於 Windows Terminal 這樣的應用,會如雨後春筍一般,從開源社群中源源不斷的冒出來。

總結

對於廣大使用 Windows 開發的使用者來說,一個閃閃發亮的、現代化的、功能強大的終端固然很好,但好的終端只不過是錦上添花之舉,而一個強大好用的 Shell 才是真正能夠雪中送炭的東西,只有一個足夠好用的 Shell,才能成為 Windows 命令列世界的救世主。而這,才是真正值得微軟花費大量的時間、精力去做的。

延展閱讀

相關文章