从 Windows 创建文件夹,然后从 Windows 10 WSL 中的 Bash 访问

t q*_*t q 3 bash ubuntu windows-10 windows-subsystem-for-linux

我正在从 Windows 运行 Ubuntu。

当我从newFolder根目录中调用的Windows 创建一个文件夹C:\Users\myuser\AppData\Local\lxss\root\Newfolder时,当我运行时从 Bash创建一个文件夹时,我ls没有看到刚刚创建的新文件夹。

我该如何解决这个问题,以便我可以从 Windows 创建文件夹和文件,然后从 Bash 访问它们?

phu*_*clv 6

更新:

从 Windows 10 版本 1903 开始​​,可以使用\\wsl$\. 所以你可以explorer.exe .从 bash运行或\\wsl$\直接在资源管理器的地址栏中输入

请参阅Windows 10 版本 1903 中 WSL 的新增功能?

再次警告您不得通过 AppData 文件夹访问您的 Linux 文件!

对于旧版本的 Windows 10,请参见下文


WSL 根文件系统中的 Linux 文件是专门使用存储在 NTFS 扩展属性中的 POSIX 权限创建的。您可以通过运行看到fsutil file layout lxss\root并注意那里的$EA。如果你直接从 Windows 创建文件,你会搞砸,因为 win32 应用程序对 Linux 及其文件元数据一无所知

例如,当您使用 Windows 应用程序/工具打开、创建和/或修改发行版根目录下的文件时,就会出现问题:由于该文件是使用 Windows 工具创建的,因此该文件将没有任何 Linux 文件元数据(例如权限、所有者、访问/更新时间戳等)。因此,对于 Linux(仅接收 Linux 文件元数据),文件可能会报告为空,甚至可能不存在,或者可能有一些元数据,但该元数据可能无法反映文件的详细信息,导致文件内容被破坏

因此 MS 大胆警告说

在任何情况下,请勿使用 Windows 应用程序、工具、脚本、控制台等创建和/或修改 Linux 文件。

从 Windows 创建/更改 Linux 文件可能会导致数据损坏和/或损坏您的 Linux 环境,需要您卸载并重新安装发行版!

不要使用 Windows 应用程序和工具更改 Linux 文件

仅与 Linux 相关的文件应仅从 WSL 创建。如果要创建两个系统都可以访问的文件,请在 WSL 根目录之外创建它们,然后通过安装点从 WSL 访问,/mnt例如/mnt/drive/path

如果您想在 Windows 文件系统上创建文件但保留区分大小写,则使用

fsutil file setCaseSensitiveInfo <directory name> enable
Run Code Online (Sandbox Code Playgroud)

该标志也可以检查 fsutil file queryCaseSensitiveInfo <directory name>

另请参阅如何从 Windows 10 WSL 访问 linux/Ubuntu 文件?


Riz*_*Riz 5

您无法在 Ubuntu 中创建文件夹并从 Windows 访问它们。但是你可以做相反的事情。

您可以访问您的 Windows 驱动器/mnt。如果这样做,ls /mnt您将看到所有驱动器。所以 /mnt/c 是你的 C 盘的路径。同样/mnt/c/Users/username/Desktop可以让您在 Bash 中访问您的桌面。

因此,只需使用 Bash 到达您想要的路径并访问 Windows 文件和文件夹。有关快速访问 Windows 文件的更多详细信息,请使用符号链接,可在此处找到详细信息