VJZ*_*VJZ 5 windows linux debian windows-subsystem-for-linux
我一直在使用 Windows Subsystem for Linux (WSL),当我在 WSL 的主目录中创建一个文件时,它实际上存在于文件资源管理器中的什么位置,而且,因为我的 C: 驱动器位于 /mnt/c/ 中,这是否意味着Linux 是在单独的分区还是挂载上?
当我在 WSL 的根目录中运行列表目录时:
bin boot dev etc home init lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Run Code Online (Sandbox Code Playgroud)
普通文件浏览器中的var
或bin
文件夹存在于哪里?home
确认-不!关于评论和您相应的自我回答,请不要直接通过 访问文件%LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs
。虽然对于 WSL1,文件确实由 WSL存储在那里,但直接访问它们可能会导致 WSL 损坏。另请注意,对于 WSL2,文件位于虚拟 HDD ( ext4.vhdx
) 内,因此它根本无法使用此技术。
引用Microsoft 的 DevBlog 关于该主题的内容:
对于 Windows 上的 WSL,有一条硬性规则:
在任何情况下,请勿
%LOCALAPPDATA%
使用 Windows 应用程序、工具、脚本、控制台等访问、创建和/或修改文件夹内的 Linux 文件。使用某些 Windows 工具打开文件可能会对打开的文件和/或文件夹进行读锁定,防止更新文件内容和/或元数据,>本质上导致文件/文件夹损坏。
从 Windows 在 Appdata 文件夹中创建/更改 Linux 文件可能会导致数据损坏和/或损坏您的 Linux 环境,需要您卸载并重新安装发行版!
正确答案也可以在该页面中找到。WSL 提供\\wsl$\<distroname>
伪网络共享,允许您从 Windows安全地访问 WSL 文件系统。请注意,WSL 实例确实需要运行才能显示在\\wsl$\
.
根据 @Narzard 的评论,我的情况的正确答案是转到此文件夹:
%LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs
Run Code Online (Sandbox Code Playgroud)
由于我有一个 debian 发行版,因此您的包文件夹名称可能与我的不同,但其总体思路是相同的。事实上,当我转到该路径时,linux 的根文件夹都出现了。
正如 @NotTheDr01ds 指出的那样,您不应该对此文件夹执行任何操作,因为它可能会损坏您的 WSL。如果出于某种原因您想知道的话,这只是“实际文件夹”。