在我的 Ubuntu 子系统中的 Windows 10 上,当我打开目录中的文件并尝试在该文件打开时重命名该目录时,我无法执行此操作。
例子:
$mkdir demo
$touch demo/test.txt
$CtlZ
$[2]+ Stopped vim demo/test.txt
$mv demo demo100
mv: cannot move 'demo' to 'demo100': Permission denied
现在,当我关闭文件时,我可以重命名它。
$mv demo demo100
$ls demo100
test.txt
这似乎是出乎意料的行为。当我在常规 Ubuntu 机器上进行相同的测试时,我能够毫无问题地重命名文件。关于可能导致这种情况的任何想法?
答案1
是的,这是正常的 Windows 行为。在 Windows 下,打开文件会有效地将其锁定在文件系统上并防止其被移动。
重要的是要了解 WSL 不是虚拟机。它是窗口顶部的一个(薄)层,可以像 Posix 一样访问窗口。所以当你在WSL下打开一个文件时,你实际上是在windows下打开它,并受到windows通常的规则的约束。
阅读:
https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux
概述
WSL 提供了 Microsoft 开发的兼容 Linux 的内核接口(不包含 Linux 内核代码),可以在其上运行 GNU 用户空间,例如 Ubuntu、openSUSE、SUSE Linux Enterprise Server、Debian 和 Kali Linux。
更远
硬件和文件系统访问
由于没有硬件模拟/虚拟化(与 coLinux 等其他项目不同),WSL 直接使用主机文件系统