您的位置:首頁>科技>正文

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)

Python部落(python.freelycode.com)組織翻譯, 禁止轉載, 歡迎轉發。

當Windows10年度升級版(AU)發佈時, 針對Linux的Windows子系統(WSL)還遠未完成, 並且已知具有許多不相容性, 特別是與流行的開發者工具, 如node.js, Java等不相容。 然而, 讓這個令人興奮的新功能掌握在真正的用戶手中是具有重要意義的, 我們可以方便地從中學習。 WSL需要運行什麼, 做什麼工作, 不做什麼工作等都取決於你。

這個版本是由你而建, 也是為你而建的

我代表WSL&控制台工程團隊, 衷心感謝在過去12個多月裡嘗試過和使用過Bash/WSL的所有人, 特別是對所有在GitHub上提出問題, 或在Twitter上聯繫我, 或在UserVoice上提交/投票,

和在StackOverflow, AskUbuntu, Reddit, Command-Line博客, WSL Team博客和其他地方進行問題詢問的朋友。

我們在Windows 10 Creators Update中發佈的大規模改進過的Bash/WSL和Windows控制台應歸功於所有人!

WSL的新特性

在Windows10創作者更新(CU)的開發期間, WSL工程團隊完成了數百個修復和改進, 其中大部分在WSL版本說明中有記載。 儘管在 Command-Line 博客中強調了一些的控制台和WSL的顯著特點, 但我們認為有一個最重要特性和功能的綜合清單是很有益處的。

所以, 請閱讀Windows10創作者更新(CU)並找出Bash/WSL&控制台的新特性吧:

更高相容性

對於Win10 CU的主要目標是大幅提高WSL的深度和與Linux系統調用介面(SCI)的相容性的廣度。 通過擴大和改進我們的系統調用實現, 我們增加了使用者需要運行的工具, 平臺, 執行時間等。

結果是, 在Win10 CU中最主流的開發工具現在能夠按預期工作,

其中包括:

核心工具:apt, sed, grep, awk, top, tmux, ssh, scp等

Shells:Bash, zsh, fish等

開發工具:vim, emacs, nano, git, gdb等

語言&平臺:Node.js & npm, Ruby & Gems, Java & Maven, Python & Pip, C/C++, C# & .NET Core & Nuget, Go, Rust, Haskell, Elixir/Erlang等

系統&服務:sshd, Apache, lighttpd, nginx, MySQL, PostgreSQL

其他

注意事項:可能有人已經對運行X/GUI apps和desktops on WSL進行了探索。 雖然我們沒有明確支援WSL X / GUI應用/桌面, 但我們沒有做任何事情來阻止它們。 所以, 如果你希望讓你喜歡的編輯器, 桌面, 流覽器等運行, 這也是可以的。 但要知道, 我們仍然專注於提供一個非常堅實的命令列體驗, 運行的所有你需要命令列開發工具。

支援Ubuntu 16.04

雖然Win10年度升級版提供對Ubuntu14.04的支援, 在Win10創作者更新版中, WSL現在支持Ubuntu16.04, 安裝在Win10 CU的任何新的Bash實例現在都安裝Ubuntu16.04。

如果您想瞭解您運行的是什麼版本的Ubuntu, 請在Windows控制台中Ubuntu上的Bash中輸入:

重要提示:現有的Ubuntu14.04實例不會自動升級到16.04, 您必須按照下面兩種方式之一手動將實例升級到Ubuntu16.04:

移除或替換(推薦)

原地升級

移除或替換

如果你正在運行一個Ubuntu14.04的實例, 建議您移除並用新的Ubuntu實例16.04取代現有的實例。

警告:。 下面的操作會刪除現有的版本和任何你存儲在Linux檔案系統中的檔。 因此, 一定要複製/移動任何您希望保留的Linux檔, 例如, 複製到Windows資料夾(例如:/mnt/c/temp/wslbackup/…), 然後再拆卸和替換您的實例!

要刪除並重新安裝你的Ubuntu實例, 請在CMD/ PowerShell控制台輸入下面的命令:

上面的lxrun /install命令會安裝一個新的Ubuntu 16.04副本在你的電腦中。

原地升級

如果你的Ubuntu實例是特別複雜的配置, 你可以選擇就地升級, 但這可能不是最佳的選擇。 如果您選擇就地升級您的實例, 使用Ubuntu指令升級現有的實例:

支援IFconfig與網路連接枚舉

Win10 AU最大的缺點之一是它缺乏枚舉網路連接的能力,

這會阻止ifconfig, gulp, npm等工具正常運行。

這在Win10 CU中已經解決了, 您可以使用ifconfig來枚舉和檢查可用網路介面卡的配置:

支援Ping & ICMP網路

使用者在Win10 AU中經常遇到的另一個問題是非管理員無法ping網路端點。 這已經在Win10 CU中修復了:

支持檔更改通知(INOTIFY)

另一個非常必要的改進就是使一個工具在更改檔時能夠註冊通知的能力。 這是Web, Node.js, Ruby和Python開發人員以及許多其他開發人員經常使用的基本功能。

例如, 如果您正在完成一個node.js網站專案, 在vim, Emacs, Sublime Text, VS Code等環境中編輯原始程式碼, 每當您保存代碼時, 您可能希望您的網站服務器重新載入新更改的頁面來源, 以便您可以刷新流覽器,並立即看到您的更改。

那麼現在你可以!WSL支援inotify,允許應用程式註冊檔案系統更改通知,然後可以觸發操作,如重建專案或重新啟動本地Web伺服器。這適用於DrvFS和內部LXF的定位。

重要的是,此支持文件更改通知特點還支援Windows檔案系統中檔的檔更改通知。這意味著您可以使用Windows GUI編輯器(如VSCode,Visual Studio,SublimeText,Notepad ++等)編輯存儲在Windows檔案系統上的專案源,並且在Bash / WSL中運行的node.js為您的網站提供服務,並獲取您保存檔時的更改。

Windows Linux Interop

構建WSL的一個關鍵目標是減少Windows工具與Linux命令列工具和環境一起運行時遇到的“gaps”。當我們在Windows 10 AU中發送WSL時,我們將Linux和Windows併入,但是仍然存在很大的“gap”——而兩個系統可以共用一些相同的檔,每個環境彼此相互隔離。

用戶經常告訴我們,他們希望能夠從Bash中調用Windows應用程式,並從Windows中調用Linux應用程式。所以,我們添加了這個功能!在Windows 10 Creators Update中,您現在可以從Bash中啟動Windows應用程式和工具:

您可以從Windows中啟動Linux二進位檔案/命令/腳本:

以便您可以刷新流覽器,並立即看到您的更改。

那麼現在你可以!WSL支援inotify,允許應用程式註冊檔案系統更改通知,然後可以觸發操作,如重建專案或重新啟動本地Web伺服器。這適用於DrvFS和內部LXF的定位。

重要的是,此支持文件更改通知特點還支援Windows檔案系統中檔的檔更改通知。這意味著您可以使用Windows GUI編輯器(如VSCode,Visual Studio,SublimeText,Notepad ++等)編輯存儲在Windows檔案系統上的專案源,並且在Bash / WSL中運行的node.js為您的網站提供服務,並獲取您保存檔時的更改。

Windows Linux Interop

構建WSL的一個關鍵目標是減少Windows工具與Linux命令列工具和環境一起運行時遇到的“gaps”。當我們在Windows 10 AU中發送WSL時,我們將Linux和Windows併入,但是仍然存在很大的“gap”——而兩個系統可以共用一些相同的檔,每個環境彼此相互隔離。

用戶經常告訴我們,他們希望能夠從Bash中調用Windows應用程式,並從Windows中調用Linux應用程式。所以,我們添加了這個功能!在Windows 10 Creators Update中,您現在可以從Bash中啟動Windows應用程式和工具:

您可以從Windows中啟動Linux二進位檔案/命令/腳本:

Next Article
喜欢就按个赞吧!!!
点击关闭提示