WSL(Windows Subsystem for Linux)讓 Windows 可以執行 Linux 終端機、套件與開發工具。本文先介紹日常基本操作,再說明如何將 WSL 2 發行版安裝到 D:\wsl,並自訂環境名稱。
文中的 dev、test 都是通用示範環境名稱,請依自己的環境替換。本文操作指令在 Windows PowerShell 執行。尚未安裝 WSL 的讀者,可以先閱讀第 3、4 節完成安裝,再回來練習。
1. Windows 端常用 WSL 指令
以下在 Windows PowerShell 執行。先用 wsl -l -v 查看已安裝環境,再將範例的 dev 換成清單中的名稱。使用 wsl -d dev 進入 Linux,輸入 exit 返回 PowerShell。
| 完整指令 | 簡寫 | 用途 |
|---|---|---|
wsl --help |
— | 查看支援參數 |
wsl --version |
wsl -v |
查看 WSL 程式與核心版本 |
wsl --status |
— | 查看預設環境等狀態 |
wsl --list |
wsl -l |
列出已安裝的發行版名稱 |
wsl --list --verbose |
wsl -l -v |
列出已安裝發行版的名稱、狀態與 WSL 版本 |
wsl --list --online |
wsl -l -o |
查詢可以安裝的發行版(distro) |
wsl --list --running |
wsl -l --running |
列出正在執行的環境;--running 沒有簡寫 |
wsl --list --quiet |
wsl -l -q |
只輸出已安裝發行版的名稱 |
wsl --distribution dev |
wsl -d dev |
進入 dev |
wsl --distribution dev --cd '~' |
wsl -d dev --cd '~' |
從 Linux 家目錄開始;--cd 沒有簡寫 |
wsl --distribution dev --user root |
wsl -d dev -u root |
使用 root 進入 dev |
wsl --set-default dev |
wsl -s dev |
設定直接輸入 wsl 時使用 dev |
wsl --terminate dev |
wsl -t dev |
停止 dev 與其中的程序 |
wsl --shutdown |
— | 停止所有環境及 WSL 2 虛擬機 |
wsl --update |
— | 更新 WSL 本身 |
「—」表示沒有對應的短參數。簡寫與完整寫法可以混用,例如 wsl -l --running。
簡寫對照:-l 是 --list、-o 是 --online、-q 是 --quiet、-d 是 --distribution、-u 是 --user、-s 是 --set-default、-t 是 --terminate。
-v 的意思取決於使用位置: wsl -v 對應 wsl --version,查看 WSL 程式版本;wsl -l -v 中的 -v 對應 --verbose,顯示發行版的詳細清單。--version 2 在安裝或匯入命令中用來指定 WSL 2,應保留完整參數,不能直接替換成 -v 2。
清單的星號表示預設發行版。VERSION 2 是 WSL 2 架構,不是 Ubuntu 版本,也不是 wsl --version 顯示的程式版本。參考:Microsoft WSL 管理指令。
2. 理解環境名稱、儲存位置與 Linux 使用者
| 項目 | 範例 | 用途 |
|---|---|---|
| Linux 發行版 | Ubuntu-24.04 | 選擇安裝哪種 Linux |
| WSL 註冊名稱 | dev、test | Windows 啟動與管理環境時使用 |
| 儲存位置 | D:\wsl\dev | Linux 虛擬磁碟所在目錄 |
| Linux 使用者 | demo | Linux 內的登入帳號 |
wsl -d dev 的 dev 是 WSL 註冊名稱,不是使用者。同一種 Ubuntu 可以建立成不同名稱的環境,各自保存套件與專案。
WSL 2 使用輕量虛擬機,各發行版通常以 ext4.vhdx 保存 Linux 檔案系統。Linux 家目錄中的專案、資料庫和套件,都會占用該磁碟檔案。移到 D 槽主要解決 Linux 資料的容量問題;WSL 程式、Windows 元件、暫存與預設 swap 仍可能使用 C 槽。
3. 首次啟用 WSL
尚未安裝 WSL 時,以系統管理員身分開啟 PowerShell:
# 只啟用 WSL,不先安裝預設 Ubuntu
wsl --install --no-distribution
依提示重新啟動 Windows,再執行:
wsl --update
wsl --version
wsl --set-default-version 2
已能使用 WSL 就跳過首次啟用。設定預設版本只影響新環境,不會轉換既有發行版。
請先執行 wsl --help,確認目前版本支援本文使用的參數。若缺少 --name、--location 等參數,請先更新 WSL;搬移與預設使用者設定也應依目前版本的 help 確認。
4. 安裝到 D:\wsl,並自訂名稱
以下在 Windows PowerShell 執行。
先查詢可安裝的發行版,使用清單中的 NAME:
wsl --list --online
# 等效簡寫:wsl -l -o
將 Ubuntu 安裝為 dev,放在 D:\wsl\dev:
mkdir 'D:\wsl'
wsl --install -d Ubuntu-24.04 --name dev --location 'D:\wsl\dev' --version 2
| 參數 | 說明 |
|---|---|
--distribution Ubuntu-24.04,簡寫 -d Ubuntu-24.04 |
要安裝的 Linux 發行版,依線上清單為準 |
| –name dev | 自訂 WSL 名稱為 dev |
| –location ‘D:\wsl\dev’ | 指定儲存位置 |
| –version 2 | 使用 WSL 2 |
取名字用 --name,指定位置用 --location。 不必先裝到 C 槽,再搬到 D 槽。
首次啟動依提示建立 Linux 使用者與密碼。輸入密碼時不顯示字元是正常的,Linux 帳密獨立於 Windows。若沒有自動啟動,可執行:
wsl -d dev
--location 見 Microsoft 安裝參數;--name 請依目前版本的 wsl --help 確認;Microsoft WSL 專案也有同時指定名稱與位置的範例。
建議每個環境使用獨立目錄,例如 D:\wsl\dev 與 D:\wsl\test。名稱必須未被使用,目標目錄應是新的或空的目錄,不能與既有環境共用磁碟檔案。名稱與目錄不必相同。
安裝指令中的 -d 是 --distribution 的簡寫。–install、–name、–location 沒有短參數;若要安裝後不自動啟動,可加上 --no-launch,簡寫為 -n。
確認結果:
wsl -l -v
Get-ChildItem -LiteralPath 'D:\wsl\dev' -Force
清單應出現 dev、版本為 2,目錄通常會有 ext4.vhdx。也可以唯讀查詢目前 Windows 使用者的名稱與實際位置:
Get-ChildItem 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss' |
Get-ItemProperty |
Select-Object DistributionName, BasePath
不需要手動修改登錄。
5. 已經裝在 C 槽,如何搬到 D 槽?
本節的 --export、–import、–unregister、–manage 與 --move 保留完整寫法,沒有對應的短參數。範例中的 wsl --terminate Ubuntu 可寫成 wsl -t Ubuntu,wsl -d Ubuntu 則是 wsl --distribution Ubuntu 的簡寫。
保留名稱:使用 --move
先確認 help 的 --manage 區段支援 --move。以下將 Ubuntu 移到新的 D:\wsl\ubuntu:
# 先儲存工作,停止會寫入環境的程式
wsl --terminate Ubuntu
# 建議先備份,確認 D 槽容量足夠
mkdir 'D:\wsl-backups'
wsl --export Ubuntu 'D:\wsl-backups\ubuntu-before-move.tar'
# 上一步成功後才繼續,使用未被占用的目標位置
wsl --manage Ubuntu --move 'D:\wsl\ubuntu'
wsl -d Ubuntu
搬移後仍叫 Ubuntu。用登錄查詢核對 BasePath,並確認專案、帳號與服務正常。搬移參數以目前版本的 help 為準。
同時換名字與位置:匯出再匯入
需要改名或不支援 --move 時,可以建立新環境。以下把 Ubuntu 複製為 ubuntu-dev,先保留舊環境:
mkdir 'D:\wsl-backups'
mkdir 'D:\wsl\ubuntu-dev'
# 先儲存工作、停止服務
wsl --terminate Ubuntu
wsl --export Ubuntu 'D:\wsl-backups\ubuntu.tar'
# 匯出成功後才繼續
wsl --import ubuntu-dev 'D:\wsl\ubuntu-dev' 'D:\wsl-backups\ubuntu.tar' --version 2
wsl -l -v
wsl -d ubuntu-dev
語法:
wsl --import <自訂名稱> <安裝位置> <備份檔案> --version 2
第一個參數決定名字,第二個決定位置。這是建立新的註冊環境,不是原地改名。舊環境、備份與新環境會同時占用空間;保留舊環境時,C 槽空間尚未釋放。
驗證後才移除舊環境
先確認新環境的專案、資料庫、使用者、權限與服務正常,並保留可還原備份。如果確定要移除舊 Ubuntu,才執行:
# 危險:永久刪除 Ubuntu 的 Linux 資料、套件與設定
wsl --unregister Ubuntu
unregister 不只是刪除清單上的名稱,也不是重新啟動指令。
6. 設定 WSL 預設使用者
匯入的環境可能預設以 root 啟動。如果該環境已有一般使用者,例如 demo,較新版本可用 WSL 管理指令指定預設帳號:
wsl --manage ubuntu-dev --set-default-user demo
wsl --terminate ubuntu-dev
wsl -d ubuntu-dev
--set-default-user 沒有短參數;範例中的 --terminate 可簡寫為 -t,-d 則是 --distribution。demo 必須是環境內已存在的帳號;這個指令只設定預設使用者,不會建立帳號。請先用 wsl --help 確認版本支援此參數。
7. 避免 C 槽變大,也要留意 swap
發行版與 swap 的位置分開設定。如果也要把 WSL 2 的 swap 放到 D 槽,在 PowerShell 執行:
mkdir 'D:\wsl-swap'
notepad "$env:USERPROFILE\.wslconfig"
加入或合併下列設定。已有 [wsl2] 時修改原區段:
[wsl2]
swap=4GB
swapFile=D:\\wsl-swap\\swap.vhdx
INI 路徑使用雙反斜線。4GB 是範例,依需求調整。儲存工作後執行:
wsl --shutdown
下次啟動套用設定。Windows 家目錄的 .wslconfig 對所有 WSL 2 環境生效;Linux 的 /etc/wsl.conf 只影響該發行版。參考:Microsoft .wslconfig 設定。
刪除環境內的資料後,VHDX 不一定立刻縮小。磁碟空間回收方式應依 WSL 版本確認,先備份再處理。參考:Microsoft WSL 磁碟空間管理。
Docker Desktop 自己管理的資料磁碟也需要另外確認位置,一般發行版搬移不代表 Docker Desktop 資料跟著搬移。
8. 常用操作速查
# 查看已安裝環境(--list --verbose 的簡寫)
wsl -l -v
# 進入指定環境(--distribution 的簡寫)
wsl -d dev
# 停止指定環境(--terminate 的簡寫)
wsl -t dev
# 新安裝:指定名稱與 D 槽位置
wsl --install -d Ubuntu-24.04 --name dev --location 'D:\wsl\dev' --version 2
先學會列出、進入與停止環境,再依用途規劃名稱與儲存位置,就能管理多個 Linux 開發環境。