你可能遇過這種情況:想跑一個 Node.js 專案,README 寫的指令全是 Linux 的;想用某個 CLI 工具,只有 Linux 和 macOS 版本;想學 Docker,教學都假設你在 Linux 上。
以前的解法是開虛擬機或裝雙系統。現在不用了——WSL(Windows Subsystem for Linux) 讓你在 Windows 裡面直接跑一個完整的 Ubuntu,不用重開機、不用開 VM、不用犧牲效能。
打開終端機,輸入 wsl,幾秒鐘後你就在 Ubuntu 裡面了。就是這麼簡單。
🎯 這篇適合誰
| 你的情況 | 建議閱讀段落 |
|---|---|
| 完全不知道 WSL 是什麼 | 從「WSL 是什麼」開始 |
| 想安裝 WSL2 + Ubuntu | 跳到「安裝 WSL2」 |
| 已經裝好,想知道怎麼用 | 看「基本操作」 |
| 想搞懂 WSL 和虛擬機差在哪 | 看「WSL vs VM」 |
| 想用 WSL 做開發 | 跳到「開發環境建置」 |
💡 WSL 是什麼?為什麼需要它?
WSL 全名是 Windows Subsystem for Linux,微軟官方做的功能,讓你在 Windows 上原生執行 Linux。
不是模擬器——WSL2 跑的是真正的 Linux 核心,由微軟維護的輕量 VM 承載。你在裡面執行的 apt、gcc、python、node 全部都是真的 Linux 二進位檔,不是什麼 Windows 移植版。
為什麼開發者需要 WSL?
很多開發工具和流程天生就是為 Linux 設計的:
- 套件管理:
apt install一行搞定,不用到處找 Windows installer - 指令列工具:
grep、sed、awk、curl、ssh全部原生可用 - 開發框架:Node.js、Python、Ruby、Go 在 Linux 上的相容性最好
- Docker:Docker Desktop 的 WSL2 後端比 Hyper-V 後端效能更好
- 伺服器部署:你的程式最終跑在 Linux Server 上,開發環境也用 Linux 最一致
- Shell Script:
.sh腳本直接跑,不用改寫成 PowerShell
WSL1 vs WSL2
WSL 有兩個版本,現在都用 WSL2:
| 項目 | WSL1 | WSL2 |
|---|---|---|
| 架構 | 系統呼叫翻譯層 | 輕量 VM + 真正 Linux 核心 |
| Linux 相容性 | 部分(有些 syscall 不支援) | 完整 |
| 檔案系統效能 | Windows 路徑快、Linux 路徑慢 | Linux 路徑快、Windows 路徑慢 |
| 記憶體用量 | 較少 | 較多(但自動回收) |
| Docker | ❌ 不支援 | ✅ 完整支援 |
| 網路 | 與主機共享 IP | 獨立虛擬網路(有獨立 IP) |
結論:用 WSL2 就對了。 WSL1 只在極少數場景有優勢(跨檔案系統效能),日常開發 WSL2 全面勝出。
📥 安裝 WSL2
系統需求
- Windows 10 版本 2004 以上(Build 19041+)
- Windows 11 全部版本
- Home 版也能用——不像 Hyper-V,WSL2 不限 Windows 版本
一行指令安裝
以系統管理員身分開啟 PowerShell 或 CMD:
wsl --install
這一行會自動幫你:
- 啟用 WSL 功能
- 啟用虛擬機平台
- 下載並安裝 Linux 核心
- 設定 WSL2 為預設版本
- 安裝 Ubuntu(最新 LTS 版本)
安裝完成後重新開機。
初始設定
重開機後,Ubuntu 會自動啟動並要求你設定:
- 使用者名稱:這是 Linux 裡面的帳號,跟 Windows 帳號無關。建議用小寫英文,像
daniel - 密碼:Linux 用的密碼,執行
sudo時需要輸入
注意:輸入密碼時畫面不會顯示任何字元(連
***都沒有),這是 Linux 的正常行為,不是當機了。
安裝其他 Linux 發行版(選用)
預設裝的是 Ubuntu,如果你想用其他發行版:
# 查看可安裝的發行版
wsl --list --online
# 安裝指定發行版
wsl --install -d Debian
wsl --install -d kali-linux
你可以同時安裝多個發行版,各自獨立。
🔧 基本操作
啟動和切換
# 開啟預設的 Linux(通常是 Ubuntu)
wsl
# 開啟指定發行版
wsl -d Ubuntu
# 查看已安裝的發行版和狀態
wsl --list --verbose
# 關閉所有 WSL
wsl --shutdown
終端機選擇
Windows 內建的 Windows Terminal 是最好的 WSL 終端機:
- 多分頁:可以同時開 PowerShell、CMD、Ubuntu
- 自動偵測已安裝的 WSL 發行版
- 支援自訂主題和字型
- 快捷鍵:
Ctrl+Shift+數字開新分頁
如果沒有 Windows Terminal,在 Microsoft Store 搜尋安裝就好。
Linux 基本指令速查
剛進入 Ubuntu,這些指令最常用:
| 指令 | 功能 | 範例 |
|---|---|---|
pwd |
顯示目前路徑 | pwd → /home/daniel |
ls |
列出檔案 | ls -la 顯示詳細資訊 |
cd |
切換目錄 | cd /home |
mkdir |
建立資料夾 | mkdir projects |
cp |
複製 | cp file.txt backup.txt |
mv |
移動 / 改名 | mv old.txt new.txt |
rm |
刪除 | rm file.txt(小心,沒有回收桶) |
cat |
顯示檔案內容 | cat config.json |
sudo |
以管理員權限執行 | sudo apt update |
套件管理(apt)
Ubuntu 用 apt 管理套件,這是你最常打的指令之一:
# 更新套件清單(建議每次裝東西之前先跑)
sudo apt update
# 升級已安裝的套件
sudo apt upgrade -y
# 安裝套件
sudo apt install git curl wget vim -y
# 移除套件
sudo apt remove 套件名稱
# 搜尋套件
apt search 關鍵字
📂 檔案系統互通
WSL 和 Windows 的檔案系統可以互相存取,但有些眉角要注意。
從 WSL 存取 Windows 檔案
Windows 的磁碟掛載在 /mnt/ 底下:
# C 槽
ls /mnt/c/
# D 槽
ls /mnt/d/
# 存取桌面
ls /mnt/c/Users/你的名字/Desktop/
從 Windows 存取 WSL 檔案
在 Windows 檔案總管的路徑列輸入:
\\wsl$\Ubuntu
或者在 WSL 裡面執行:
# 用 Windows 檔案總管開啟當前目錄
explorer.exe .
效能注意事項(很重要)
專案檔案放在 WSL 檔案系統裡面,不要放在 /mnt/c/。
這是 WSL2 最常見的效能陷阱。WSL2 的 Linux 檔案系統(/home/你的名字/)是原生 ext4,速度很快。但如果你把專案放在 /mnt/c/(Windows 的 NTFS),每次檔案操作都要跨過 9P 協議轉譯,速度可能慢 5-10 倍。
# ✅ 正確:專案放在 Linux 家目錄
cd ~
mkdir projects
cd projects
git clone https://github.com/your/repo.git
# ❌ 錯誤:專案放在 Windows 磁碟
cd /mnt/c/Users/你的名字/Documents/
git clone ... # 這裡的 git 操作會很慢
經驗法則:需要用 Linux 工具處理的檔案放 Linux 檔案系統(
~/);需要用 Windows 軟體開的檔案放 Windows(/mnt/c/)。兩邊各放各的,透過 VS Code 或explorer.exe橋接。
🆚 WSL vs 虛擬機:到底差在哪?
你可能想問:「WSL 不就是個虛擬機嗎?」技術上 WSL2 確實用了輕量 VM,但使用體驗完全不同。
| 項目 | WSL2 | 傳統 VM(VMware / Hyper-V) |
|---|---|---|
| 啟動速度 | 1-2 秒 | 30-60 秒 |
| 記憶體用量 | 動態(幾百 MB 起) | 固定分配(2-4 GB 起) |
| 檔案互通 | 雙向原生存取 | 需設定共享資料夾 |
| 圖形介面 | 支援 WSLg(Linux GUI 應用程式) | 完整桌面 |
| 網路 | 與主機互通 | 需設定虛擬交換器 |
| 獨立性 | 共享主機核心 | 完全獨立的 OS |
| 快照還原 | ❌ | ✅ |
| 多 OS | 僅 Linux | 任何 OS |
| 適合 | 開發、CLI 工具 | 測試、隔離環境、非 Linux OS |
簡單判斷:
- 你需要的是 Linux 指令和開發工具 → WSL
- 你需要的是 完整獨立的作業系統(可能不是 Linux)→ 虛擬機
- 你需要 快照還原、隔離測試 → 虛擬機
- 你需要 跑 Docker 容器 → WSL(Docker Desktop 的 WSL2 後端效能更好)
兩者不是互斥的——很多人同時用 WSL 做日常開發,再開 VM 做需要隔離的測試。
💻 開發環境建置
WSL 裝好後,來把常見的開發工具設定好。
Git
Ubuntu 預設有裝 Git,但建議更新並設定身分:
sudo apt update
sudo apt install git -y
git config --global user.name "你的名字"
git config --global user.email "你的@email.com"
Node.js(使用 nvm)
不要用 apt install nodejs——版本太舊。用 nvm 管理 Node.js 版本:
# 安裝 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# 重新載入 shell
source ~/.bashrc
# 安裝最新 LTS 版本
nvm install --lts
# 確認版本
node -v
npm -v
Python
Ubuntu 預設有 Python 3,但建議裝 pip 和 venv:
sudo apt install python3-pip python3-venv -y
# 建立虛擬環境
python3 -m venv myenv
source myenv/bin/activate
VS Code 整合(強烈推薦)
VS Code 對 WSL 的整合是最好的——安裝 Remote - WSL 擴充套件後,VS Code 可以直接在 WSL 裡面開啟專案,就像在本機一樣。
設定方式:
- Windows 上安裝 VS Code
- 安裝 WSL 擴充套件(搜尋 "WSL" 或 "Remote - WSL")
- 在 WSL 終端機裡面,切到專案目錄:
cd ~/projects/my-project
code .
VS Code 會自動啟動並連線到 WSL。左下角會顯示 WSL: Ubuntu,表示你現在是在 Linux 環境裡面編輯和執行程式。
這是 WSL 最殺的功能:Windows 的 VS Code 介面 + Linux 的終端機和工具鏈,兩邊的優勢都拿到了。
Docker
Docker Desktop 支援 WSL2 後端,設定很簡單:
- 安裝 Docker Desktop
- Settings → General → 勾選 Use the WSL 2 based engine
- Settings → Resources → WSL Integration → 開啟你的 Ubuntu 發行版
設定完成後,在 WSL 裡面就可以直接用 docker 指令:
docker run hello-world
docker compose up -d
不需要在 Ubuntu 裡面另外安裝 Docker——Docker Desktop 會自動整合進 WSL。
效能提醒:Docker 的資料(images、containers、volumes)會存在 WSL 的虛擬磁碟裡面。長期使用後可能佔用很多空間,後面會講怎麼管理。
⚡ 進階設定與調校
限制記憶體用量
WSL2 預設最多會吃掉主機 50% 的記憶體(Windows 10)或 80%(Windows 11)。如果你覺得 WSL 太吃記憶體,可以限制:
在 Windows 的使用者目錄建立 .wslconfig(注意是 Windows 路徑,不是 WSL 裡面):
%USERPROFILE%\.wslconfig
內容:
[wsl2]
memory=4GB
processors=2
swap=2GB
修改後執行 wsl --shutdown 再重新開啟。
設定預設發行版
如果你安裝了多個 Linux 發行版:
# 查看所有已安裝的發行版
wsl --list --verbose
# 設定預設
wsl --set-default Ubuntu
備份與匯出
WSL 的發行版可以匯出成 tar 檔備份:
# 匯出
wsl --export Ubuntu D:\backup\ubuntu-backup.tar
# 匯入(還原到新的發行版名稱)
wsl --import Ubuntu-Restore D:\wsl\ubuntu-restore D:\backup\ubuntu-backup.tar
這在換電腦或重灌系統時非常有用——你的整個 Linux 環境、裝過的套件、專案檔案全部都在 tar 裡面。
清理磁碟空間
WSL2 的虛擬磁碟(.vhdx)會自動成長但不會自動縮小。長時間使用後可能佔用很多空間:
# 先關閉 WSL
wsl --shutdown
# 用 diskpart 壓縮(以系統管理員身分執行)
diskpart
select vdisk file="C:\Users\你的名字\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
compact vdisk
exit
路徑可能因 Ubuntu 版本而異,用檔案總管找到你的 .vhdx 檔案即可。
❓ 常見問題
WSL 和 Hyper-V 有衝突嗎?
不會。WSL2 底層用的就是 Hyper-V 技術,兩者可以同時使用。但 WSL2 啟用後,跟直接啟用 Hyper-V 一樣,可能影響 VMware 和 VirtualBox 的效能。
詳見 Hyper-V 完整教學 的「與其他虛擬機軟體共存」段落。
Windows Home 能用 WSL2 嗎?
可以。 這是 WSL 比 Hyper-V 強的地方——Home 版完全支援。
怎麼更新 WSL 核心?
wsl --update
建議偶爾跑一下,微軟會持續更新 Linux 核心修復 bug 和安全漏洞。
WSL 裡面可以跑 GUI 程式嗎?
可以。Windows 11 內建 WSLg,支援 Linux GUI 應用程式。安裝方式:
# 例如安裝 gedit 文字編輯器
sudo apt install gedit -y
gedit &
視窗會直接出現在 Windows 桌面上,跟 Windows 程式並排顯示。不需要額外設定 X Server。
Windows 10 用戶需要另外安裝 X Server(如 VcXsrv),設定較複雜。
多個 WSL 發行版之間可以互通嗎?
可以,但要透過網路或共享的 Windows 路徑(/mnt/c/)。每個 WSL 發行版有自己獨立的檔案系統,互相看不到對方的 /home/。
WSL 可以取代虛擬機嗎?
看用途:
- 純開發(CLI + Docker)→ 可以,WSL 更輕量更快
- 需要完整 GUI 桌面 → 虛擬機體驗更好
- 需要快照還原 → 虛擬機,WSL 沒有快照功能
- 需要跑非 Linux OS → 虛擬機,WSL 只能跑 Linux
- 需要完全隔離 → 虛擬機,WSL 和主機共享網路和部分資源
✨ 小結
WSL2 是 Windows 開發者的祕密武器。它不是玩具、不是模擬器——是一個跑在輕量 VM 上的完整 Linux 環境,跟 Windows 深度整合。
裝好 Ubuntu、設定好 Git 和 Node.js、用 VS Code 的 WSL 擴充套件連進去,你就擁有了一個 Windows 介面 + Linux 開發環境的最佳組合。不用雙系統開機、不用開笨重的虛擬機、不用犧牲效能。
如果你是 Windows 用戶又需要做任何跟 Linux 沾上邊的開發工作,WSL2 是你第一個該裝的東西。裝完之後你會想:「為什麼我現在才知道這個。」
🔗 延伸閱讀
- VMware vs Hyper-V vs VirtualBox:新手該選哪個虛擬機? — 搞懂 WSL 和傳統虛擬機的定位差異
- Hyper-V 完整教學 — WSL2 底層用的就是 Hyper-V 技術,想深入了解可以看這篇
- Docker 是什麼?NAS 新手入門完整解說 — WSL + Docker 是最常見的開發組合
- Synology Container Manager 完整教學 — 在 NAS 上跑 Docker,跟 WSL 裡的 Docker 相互搭配