2026/10/02

WSL 使用說明:基本指令

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 確認。

參考:Microsoft WSL 基本指令。

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 槽空間尚未釋放。

參考:Microsoft 匯入 Linux 發行版。

驗證後才移除舊環境

先確認新環境的專案、資料庫、使用者、權限與服務正常,並保留可還原備份。如果確定要移除舊 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 開發環境。