Windows 10 中包含了一個 WSL(Windows Subsystem for Linux)子系統,我們可以在其中運行未經修改過的原生 Linux ELF 可執行文件。利用它我們可以做很多事情,對開發人員和普通用戶都是如此。當然對開發人員的吸引力更大一些,因為這意味著在一些情況,不再需要使用 Linux 虛擬機、雙系統、Cygwin/MSYS2 了。
在WSL裡我們可以直接訪問本地文件系統,例如你電腦有3個分區C:,D:,E:,在WSL裡的路徑分別為/mnt/c,/mnt/d,/mnt/e
通常使用方法是:Win + R 輸入 bash 直接進入,但系統自帶的bash使用體驗很差,主要有如下問題:
目前比較好的替代方案是使用 wsl-terminal,它是專門為 WSL 准備的終端模擬器,主體是 mintty,另外整合了一些工具,使用起來非常方便,也是目前用戶體驗最好的,大小也只有 1M 多。
使用方法見官方主頁:https://github.com/goreliu/wsl-terminal
實現方面,它是由在 WSL 裡啟動 sshd,然後使用 ssh 客戶端登錄的方法改進的。它的運行機制和 ssh 有很大的的區別。mintty 會運行 wslbridge,wslbridge 包含兩個程序,wslbridge.exe 和 wslbridge-backend。從文件名可以看出來,前者是 Windows 程序,後者是 Linux 程序。wslbridge.exe 會在一個隱藏窗口運行 bash.exe 進入 WSL 環境,在其中運行相同目錄下的 wslbridge-backend。wslbridge.exe 和 wslbridge-backend 之間會建立三個 tcp 連接,也就是將 stdin、stdout、stderr 分別通過三個 tcp 連接聯系起來,連接建立後就不再監聽任何端口了。而 mintty 就是一個終端模擬器,對它來說 wslbridge 和 ssh 沒有什麼區別。
性能上,在我這裡用 wslbridge 和 ssh 執行命令的速度是差不多的,前者稍微快一點,不明顯。資源占用上,前者占優。
使用的方便程度上,明顯 wslbridge 占優。不再需要啟動 sshd,配置信任關系等。另外 wslbridge 會自動將當前路徑傳遞進去,不需要自己轉換路徑然後拼接 cd 命令,這樣方便了許多。而且可以直接通過參數傳遞環境變量。我之前寫的幾個腳本減少了數十行。
http://www.bkjia.com/Linuxjc/1195265.htmlwww.bkjia.comtrue