You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bash脚本从Ubuntu复制文件到Windows目录时出现“文件或目录不存在”错误的求助

Bash脚本从Ubuntu复制文件到Windows目录时出现“文件或目录不存在”错误的求助

嘿,我来帮你分析下可能的原因,试试这些办法解决问题:

我在bash脚本里执行这条命令时遇到了错误:
sudo cp openssl/localhost.pfx /mnt/c/Users/bob/.aspnet/https
错误提示是:
cp: cannot create regular file '/mnt/c/Users/bob/.aspnet/https': No such file or directory
但我确认Windows这边对应的目录是存在的,想知道这是怎么回事?

  • 先确认WSL里能不能看到目标目录:别着急复制,先在WSL终端里执行 ls /mnt/c/Users/bob/.aspnet/,看看能不能列出https这个目录。如果看不到,大概率是WSL和Windows的文件系统同步有问题,或者权限导致你(甚至sudo后的root)看不到这个目录。
  • 检查目标路径是目录还是文件:用 ls -ld /mnt/c/Users/bob/.aspnet/https 查看路径类型,如果输出开头是-(表示是文件),那问题就来了——你要复制到目录里,但这个路径现在是个文件,cp自然会报错。这种情况先把同名文件删掉或重命名再试。
  • 刷新WSL的Windows分区挂载:有时候Windows里新建了目录,但WSL没同步上,你可以执行这两条命令重新挂载C盘:
    sudo umount /mnt/c
    sudo mount -t drvfs C: /mnt/c
    
    之后再检查目录是否能访问。
  • 留意路径的大小写:Windows不区分大小写,但WSL是严格区分的!仔细核对你的路径,比如.aspnet是不是写成了.AspNet,https是不是拼写成HTTPS了?哪怕一个字母大小写错了,WSL都会找不到路径。
  • 权限映射的坑:虽然你用了sudo,但WSL里的root用户和Windows的权限不是完全对应的。如果Windows里的https目录权限设置比较严格,WSL的root可能也没有写入权限。你可以先试试在Windows里给这个目录开放“所有用户”的写入权限,再回到WSL里尝试复制。

备注:内容来源于stack exchange,提问作者CraxFelcore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:39:08