将文件从 Windows 复制到 Windows 子系统 Linux (WSL)

Copy Files from Windows to Windows Subsystem for Linux (WSL)

我已启用开发者模式并安装了 Bash on Ubuntu on Windows

我的主目录可以在 %localappdata%\Lxss\home\<ubuntu.username>\ 下找到,我创建了一个名为 Pictures 的子目录,完整路径应该是

在 windows 上:C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures

在 bash 上:/home/<ubuntu.username>/Pictures

如果我使用命令 touch hello.txt 从 bash 创建文件,我可以在 windows UI 中自由查看此文件并将其复制到我的桌面。但是,如果我从 windows UI 创建一个新的文本文件并将其保存在 C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures,即使我重新启动 bash 或 windows,该文件是当我做 ls -l.

时不可见

为什么 bash 在它自己的主目录中看不到从 Windows 端创建的文件?

EDIT 使用 /mnt/c 不是解决方案,我试图理解 为什么 它看不到那些文件并且如果有补救措施,那么它将能够看到 UI 创建的文件,而不是尝试使用终端复制粘贴或移动文件。

您应该可以在 /mnt 目录下访问您的 windows 系统。例如在 bash 中,使用它来获取您的图片目录:

cd /mnt/c/Users/<windows.username>/Pictures

希望对您有所帮助!

您只能从 WSL 内部访问 Linux 文件系统(位于 lxss 文件夹中的文件系统); 不要 create/modify Windows 中 lxss 文件夹中的任何文件 - 这很危险,WSL 不会看到这些文件。

不过,文件可以在 WSL 和 Windows 之间共享;将文件放在 lxss 文件夹之外。您可以通过 drvFS (/mnt) 访问它们,例如 WSL 中的 /mnt/c/Users/yourusername/files。这些文件在 WSL 和 Windows.

之间保持同步

有关详细信息和原因,请参阅: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/