mv:无法移动,WSL 中的权限被拒绝

xpt*_*xpt 6 linux unix emacs permissions windows-subsystem-for-linux

我收到mv: cannot move, Permission denied错误,但在声称这是一个骗局之前,请先看看我尝试过什么:

首先,它与文件或目录模式无关:

$ mv -f .emacs.d .emacs.d.old
mv: cannot move '.emacs.d' to '.emacs.d.old': Permission denied

$ ls -Al . | grep emacs
drwx------ 1 me me 4096 2021-06-11 23:04 .emacs.d

ls -ld .
drwxr-xr-x 1 me me 4096 2021-06-12 00:17 .

$ sudo mv -f .emacs.d .emacs.d.old
mv: cannot move '.emacs.d' to '.emacs.d.old': Permission denied

$ mv -f .emacs.d ./.emacs.d.old
mv: cannot move '.emacs.d' to './.emacs.d.old': Permission denied

$ df .
Filesystem     1K-blocks      Used Available Use% Mounted on
rootfs         307276796 200040828 107235968  66% /

Run Code Online (Sandbox Code Playgroud)

其次,我尝试了我所知道的所有文件打开检查工具:

$ jobs | wc
      0       0       0

$ lsof | grep .emacs.d | wc 
      0       0       0

$ fuser .emacs.d | wc
      0       0       0
Run Code Online (Sandbox Code Playgroud)

我尝试关闭任何可能或可能不与.emacs.d目录相关的内容,包括关闭与目录无关的 vs 代码.emacs.d

完全披露:我正在使用适用于 Linux 的 Windows 子系统,但我认为我没有在任何其他 bash 实例中打开该目录。此外,如第一个输出所示,我的主目录位于 WSL 内,而不是在任何 Windows 文件夹下(即,应该与任何 Windows 程序无关)。

我已经想不出什么可能阻止我重命名这个新创建的目录。

小智 5

这是旧版 WSL 实现中的一个错误,它会一直固定所有打开的文件,但在关闭它们时忘记跟踪它们。这在最新版本的 WSL 和 WSL2 中已得到修复。

作为一种临时黑客,人们可以cp to target and rm the old source

请参阅 WSL 项目的 GitHub 问题

  • 另外,请确保您尝试移动的目录中没有打开另一个终端...碰巧...我的一个朋友。 (3认同)