在 Windows 上打造 Linux 開發環境:WSL2 + Ubuntu + zsh/vim

更新 發佈閱讀 6 分鐘

前言

在工作中我主要使用 Windows 開發,偶爾需要透過 ssh 進入 Linux 主機排查問題。為了在 Windows 上也能擁有一致的 Linux 終端體驗,我希望專精一套指令工具。雖然 Git Bash 足以應付多數情境,但畢竟不是真正的 Linux 環境,使用上仍有差異。

直到安裝 Docker 時,我才接觸到 WSL(Windows Subsystem for Linux)。WSL2 在 Windows 中提供完整的 Linux 核心,Docker 也依賴這個子系統運行。這個環境相對隔離,適合當測試沙盒,壞掉了直接重裝即可。由於它使用的是實際 Linux 核心,相較傳統虛擬機更輕量,體驗也更接近原生。

本文將帶你一步步完成安裝與配置,打造高效的 Linux 開發環境。

安裝前準備

系統需求

Windows 11,並確認相關更新

啟用必要功能

在搜索列查找windows功能,確保下列項目以勾選,並重新開機確保啟用

raw-image

配置 .wslconfig(進階)

.wslconfig 位於 使用者目錄(C:\Users\<你的帳號>\.wslconfig),沒有的話請自行建立檔案

raw-image

配置內容請視本機資源而定,例如:

  1. 有可能使用docker或編譯大型專案,記憶體上限10GB,如果是一般開發,4GB即可
  2. processors用來限制可使用的CPU核心數
  3. swap 作為記憶體的備援空間
  4. guiApplications預設有圖形化介面,但我並不打算使用,可以省一點效能
  5. localhostForwarding可以理解為docker的port mappping,讓window上本機的localhost:8080跟wsl內的結果一致

安裝

開機終端機,鍵入下列指令即可

wsl --install -d Ubuntu

安裝過程會要求建立一組使用者帳號密碼,其中打密碼時並不會顯示在畫面上,避免洩漏安全資訊,並且會要求輸入兩次。

結束後即安裝完成,此時就算關閉終端機,wsl並不會停止,可以開啟工作管理員確認。

raw-image

其中VmmemWSL會背景運行,要完全關閉須執行

wsl --shutdown

要再次開啟Ubuntu,只需要在終端機新增頁籤,就會觸發wsl啟動。

raw-image

套件管理工具

前面忘了提及,Linux有許多的發行版本,我使用的是比較常入門的Ubuntu。
在Ubuntu上,應用程式的大多可以透過套件管理工具進行安裝,使用的是apt

第一件事就是先更新apt管理的套件清單,加上sudo避免權限不足。完成後,大多數常見的軟體安裝步驟,已變成是一行指令可以搞定的作業。

# 更新套件清單
sudo apt update
sudo apt upgrade -y

# 安裝git​
apt install git

zsh

如果你跟著步驟執行,會發現跟我圖中展示的不太一樣,這是因為我另外安裝了終端機zsh,以及oh-my-zsh等調整外觀及自動補全(autocomplete)功能,接下來就跟著鍵入指令進行安裝。

raw-image
# 1. 安裝zsh
sudo apt update
sudo apt install zsh -y

# 2. 切換預設 shell 為 zsh
chsh -s $(which zsh)

# 3. 安裝oh-my-zsh(官方腳本)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 4. 安裝常用插件(自動補全、語法高亮)
# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting​

完成後記得編輯~/.zshrc,裡面是zsh的配置,在啟動時進行載入,並確保

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

存檔後記得source ~/.zshrc重新載入配置

vim

至於編輯器,由於大多數企業網路政策多有限制,配置上盡量簡單越好,所以採用vim及基本插件。最後附上參考自youtube的教學,照著做出下列結果,也是可以打造出不需要滑鼠且美觀的高效率開發環境。

raw-image

結語

如果你也在 Windows 上開發,卻偶爾需要 Linux 的指令或環境,WSL2 是一個非常輕量又方便的選擇。只要幾行指令,就能打造出一致的終端體驗,甚至加上 zsh、vim 讓操作更順手。這樣的快速試誤,或許會成為你日常開發的好幫手,不妨親自試試,感受它帶來的效率提升。

參考來源


留言
avatar-img
留言分享你的想法!
avatar-img
Err500
13會員
82內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
Err500的其他內容
2024/09/13
本文探討在Linux系統中如何處理字型檔案,包括字型檔的安裝路徑、使用指令進行管理和常見問題的解答。 透過實際測試步驟,讀者將學習如何將字型檔案傳輸到遠端Linux主機,並確認其載入狀況,解決字型未生效及權限不足的問題,提升讀者對Linux操作的熟悉度。
2024/09/13
本文探討在Linux系統中如何處理字型檔案,包括字型檔的安裝路徑、使用指令進行管理和常見問題的解答。 透過實際測試步驟,讀者將學習如何將字型檔案傳輸到遠端Linux主機,並確認其載入狀況,解決字型未生效及權限不足的問題,提升讀者對Linux操作的熟悉度。
2024/03/30
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
2024/03/30
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
2023/02/23
進入官方網站,根據自己電腦的作業系統,選擇適合的安裝檔。 切記,注意一下基本的配備要求
Thumbnail
2023/02/23
進入官方網站,根據自己電腦的作業系統,選擇適合的安裝檔。 切記,注意一下基本的配備要求
Thumbnail
看更多
你可能也想看
Thumbnail
你有想過嗎?如果把你過去一週、甚至一整個月的信用卡帳單全部攤開,會變成什麼畫面?😉 格編最近做了一個小實驗:把每一筆消費都丟到地圖上標記,結果它變成一張非常誠實的「生活熱力圖」。把每一筆刷卡都丟到地圖上之後,哪一條路上出現最多「小點點」,就代表你最常走那一條路;哪一個區塊被畫滿圈圈、標記最多店家
Thumbnail
你有想過嗎?如果把你過去一週、甚至一整個月的信用卡帳單全部攤開,會變成什麼畫面?😉 格編最近做了一個小實驗:把每一筆消費都丟到地圖上標記,結果它變成一張非常誠實的「生活熱力圖」。把每一筆刷卡都丟到地圖上之後,哪一條路上出現最多「小點點」,就代表你最常走那一條路;哪一個區塊被畫滿圈圈、標記最多店家
Thumbnail
VS Code 使用 WSL 啟動 Ubuntu 終端機時,因誤用 bash.exe -d 指令導致啟動失敗的錯誤解決方案。文中詳細說明錯誤原因、正確設定方式及驗證步驟,並提供 settings.json 設定檔修改範例。
Thumbnail
VS Code 使用 WSL 啟動 Ubuntu 終端機時,因誤用 bash.exe -d 指令導致啟動失敗的錯誤解決方案。文中詳細說明錯誤原因、正確設定方式及驗證步驟,並提供 settings.json 設定檔修改範例。
Thumbnail
本文描述了作者在使用WSL進行生物資訊分析時遇到的兩個主要問題,以及如何解決這些問題。第一個問題是如何處理大型數據集的記憶體問題,作者透過分批讀取數據解決了這個問題。第二個問題是如何從TCGA下載大型檔案,作者使用GDC Data Transfer Tool解決了下載過程中因為連線被重置的問題。
Thumbnail
本文描述了作者在使用WSL進行生物資訊分析時遇到的兩個主要問題,以及如何解決這些問題。第一個問題是如何處理大型數據集的記憶體問題,作者透過分批讀取數據解決了這個問題。第二個問題是如何從TCGA下載大型檔案,作者使用GDC Data Transfer Tool解決了下載過程中因為連線被重置的問題。
Thumbnail
久違的使用 WSL,發現現在進步很多,但有個地方一直設定不好,就是本文今天的主角──PhpStrom 中的 PHP_Codesniffer。好在皇天不負苦心人,最後總算搞定了,所以寫一篇筆記記錄。
Thumbnail
久違的使用 WSL,發現現在進步很多,但有個地方一直設定不好,就是本文今天的主角──PhpStrom 中的 PHP_Codesniffer。好在皇天不負苦心人,最後總算搞定了,所以寫一篇筆記記錄。
Thumbnail
打開 PowerShell 關閉wsl  wsl --shutdown 執行: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser iwr -useb https://raw.githubusercontent.com/okibcn/wslc
Thumbnail
打開 PowerShell 關閉wsl  wsl --shutdown 執行: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser iwr -useb https://raw.githubusercontent.com/okibcn/wslc
Thumbnail
使用 Vscode 連線至 WSL 的詳細教學
Thumbnail
使用 Vscode 連線至 WSL 的詳細教學
Thumbnail
1. WSL 的安裝流程 2. WSL 的使用 3. 取得 WSL 的檔案 以上皆有附圖
Thumbnail
1. WSL 的安裝流程 2. WSL 的使用 3. 取得 WSL 的檔案 以上皆有附圖
Thumbnail
👨‍💻簡介 因在wsl環境下使用websocket通訊協議,並在windows使用postman發生連線被拒 嘗試了localhost與127.0.0.1都無效,爬文後找到了一些解決辦法,這邊簡單紀錄一下
Thumbnail
👨‍💻簡介 因在wsl環境下使用websocket通訊協議,並在windows使用postman發生連線被拒 嘗試了localhost與127.0.0.1都無效,爬文後找到了一些解決辦法,這邊簡單紀錄一下
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News