我是 Windows 新手,已根据提供的说明安装了 WSL2这里。
它运行正常,但我无法找到它在计算机上的安装位置。 的输出pwd
是home/nkp68
。
如何从 WSL2 访问 Windows 机器中的文件?
答案1
如果我逐字逐句地阅读你的帖子,可能会有几个不同的问题:
- 您的 WSL Ubuntu 实例安装在机器的什么位置?
- (大概基于第一个问题)如何从 Windows 访问 WSL2 中的文件?
- “如何从 WSL2 访问我的 Windows 机器上的文件?”(有点像对面的前两个问题)
您的 WSL Ubuntu 实例在哪里?
简短回答:就你的情况而言,在基本安装的情况下,实际文件位于名为 的虚拟磁盘中ext4.vhdx
。此时你真的不需要担心“在哪里”(因为它是一个虚拟驱动器),但你通常会在 下找到它%userprofile%\AppData\Local\Packages\Canonical...\LocalState\ext4.vhdx
。你的 %userprofile%
通常是这样的C:\Users\<username>
。
更多详情:
这是默认安装。您可以安装多个发行版,甚至可以安装同一发行版的多个实例。WSL 的一大优点是能够快速复制发行版、测试某些内容并丢弃测试。这可以防止您用包、测试或其他可能在长期内造成“垃圾”的东西污染您的“良好”日常发行版。
查看全部已安装的发行版,转到 PowerShell 并运行:
Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Recurse
就你的情况而言,你可能会看到类似这样的内容:
{cff9bfd6-39db-42af-a85b-d6fca State : 1
94beff8} DistributionName : Ubuntu
Version : 2
BasePath : C:\Users\krutik\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
Flags : 15
DefaultUid : 1000
PackageFamilyName : CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
KernelCommandLine : BOOT_IMAGE=/kernel init=/init
DefaultEnvironment : {HOSTTYPE=x86_64, LANG=en_US.UTF-8, PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games, TERM=xterm-256color}
我还有很多,分布在不同的地方。
如何从 Windows 访问 WSL2 中的文件?
但是你的问题的标题“在哪里”并不重要,除非你需要对文件做些什么ext4.vhdx
(比如回收空间)。
要从 Windows 访问 WSL 中的文件,请使用路径\\wsl$\Ubuntu
(或您的发行版的名称)。在这里,您会找到\\wsl$\Ubuntu\home\nkp68
,您可以在其中安全地复制文件。
更新说明: 在 Windows 11 下,\\wsl$\<distro_name>
仍然有效,但也有一条新\\wsl.localhost\<disro_name>
路径。两者的工作原理相同,但wsl.localhost
在某些情况下应该更强大一些。
如何从 WSL2 访问 Windows 机器中的文件?
如果你在 Ubuntu 中并且需要访问 Windows 驱动器上的文件(例如C:
),那么你会发现它们(默认情况下)已为你自动安装:
ls /mnt/c/Users
ls /mnt/c
在 WSL 中处理 Windows 驱动器上的文件时,有一些细微差别,尤其是在权限和性能方面。通常,您需要保留所有项目文件里面Ubuntu ext4 文件系统(例如在您的/home/nkp68
目录下)。但您当然可以根据需要在驱动器之间访问、复制和移动文件。
WSL 功能位于哪里?
问题的标题可以理解为您想知道实际的 WSL 功能安装在哪里。我知道您(原始发帖人)的情况并非如此,但其他人也提出了这个问题,所以我会在这里添加它,以防他们根据标题找到这个问题。
系统上 WSL 功能的位置取决于您使用的 WSL 版本:
自 Windows 10 21H2(甚至更早)以来,旧版本的 WSL 就作为一项 Windows 功能包含在 Windows 本身中,并且今天仍然可以启用此功能。
当你打开 WSL Windows 功能时,可以在 下找到 WSL 适用的二进制文件
C:\Windows\System32\lxss
。你很少需要担心这个文件夹,但有时它会派上用场。WSL2 内核也位于此文件夹中,如果你想回滚多个版本,可以备份旧内核。
WSL 的较新版本作为应用程序包安装,通常来自 Microsoft Store。
当你安装 WSL 应用程序包时,文件位于(Windows 应用程序包通常如此)中
C:\Program Files\WindowsApps\<package_dir>
。请注意,这
C:\Program Files\Windows Apps
是一个受保护的目录,默认情况下您将无法看到其内容。您不应该尝试更改此目录的权限,这将危及系统的安全性和稳定性。不过,你仍然可以看到包裹目录,假设您知道其名称。要找到它,请从 PowerShell 运行以下命令:
Get-AppxPackage |? { $_.Name -like "*WindowsSubsystemforLinux*" } | tee-object -Variable packageMatches
您应该会看到
InstallLocation
返回的结果。如果只有一个结果(应该是这种情况),您可以使用以下命令打开它:explorer "$($packageMatches.InstallLocation)"
此外,在这个目录中,你会发现
tools\kernel
,这是此版本的 WSL2 内核。在 Windows 10 系统上,你可能会有两个都这些。
在 Windows 11 系统上,你可能如果您已经安装了 WSL1,则有两个安装位置。