我收到了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% /
其次,我尝试了我知道的每个文件打开检查工具:
$ jobs | wc
0 0 0
$ lsof | grep .emacs.d | wc
0 0 0
$ fuser .emacs.d | wc
0 0 0
我试图关闭所有可能与.emacs.d
目录相关或不相关的东西,包括关闭与目录无关的 vs 代码.emacs.d
。
全面披露:我正在使用适用于 Linux 的 Windows 子系统,但我认为我没有在任何其他 bash 实例中打开该目录。此外,如第一个输出所示,我的主目录位于 WSL 内,不在任何 Windows 文件夹下(即,应该与任何 Windows 程序无关)。
我不知道什么可能会阻止我重命名它新建目录。
答案1
这是旧版 WSL 实现中的一个错误,它一直固定所有打开的文件,但在关闭文件时却忘记跟踪它们。此问题已在最新版本的 WSL 和 WSL2 中得到修复。
作为临时黑客攻击,cp to target and rm the old source
答案2
对我有用的是remote.WSL.fileWatcher.polling
根据这个设置为 true文档