在Windows使用mv命令时提示 Permission denied
在Windows使用mv命令时提示“Permission denied”
类似的问题
Crywin、MSYS、Git Bash中使用“mv”命令时提示“Permission denied”
上下文
我在Git Bash
(使用的环境是`MSYS2`)中尝试移动一个git仓库目录,但是只移动了一部分,并提示Permission denied
。
一开始我以为是git仓库再创建过程中产生了一些特殊权限文件。我就试着先用文件管理器看了一下,发现有部分是只读
状态,我就递归执行取消只读。
但是又突然发现属性执行窗口下的页面存储空间还在不断增长,我想可能有链接,就用停止执行并使用chmod +w -c -R dir
去执行,然后发现在每一个.git/objects/pack/
中都是*.idx
*.pack
,总感觉不对劲。因为,其实是由一部分移动成功的,如果是因为只读,那也不可能另一部分都没有问题。果然执行完了也还是不行。
尝试换用管理员权限启动Git Bash
,也不能执行移动。
我本来都要调用chmod
试试了。
结果查到了一个有用的答案[1]。
解释
通常用Windows
的用户在自己电脑上应该是很少遇到Permission denied
,有也能用管理员权限
解决。
那么什么情况下管理员权限解决不了呢。那很又很可能是管理员——你正在占用目录或目录中的东西。
解决方法
检查文件占用。
- 检查打开的
文件资源管理器
中是否有占用目标目录或目标目录的子目录或文件的。如果有,就关闭它。
- 打开
资源监视器
(你可以在任务管理器
的第二个标签页(在Windows10
中叫性能
(Windows7
及更低版本中好像是叫资源
)然后往下看就能找到)),切换到CPU
标签页,在关联的句柄
中搜索目标目录(注意最好不要带分隔符,只要一个目录名,不然可能会出现/
和\
不匹配的情况)。如果搜到的句柄名称
确实有目标目录,那么就尝试关闭相关进程或者直接杀死它们。
另外
为了避免出现问题,最后使用find . -wholename "*/.git/objects/pack/*" -exec chmod -w -c {} \;
还原了原有的只读权限。