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

WSL2使用here doc时报错No such file or directory,是缺包还是Bug?

WSL2使用here doc触发cat: -: No such file or directory问题说明

这个问题既不是缺少系统软件包导致的,也不属于WSL的原生Bug,核心原因是WSL默认继承Windows系统PATH,调用了Windows环境下的cat工具,而非WSL发行版自带的GNU cat,二者对here doc语法的支持存在兼容问题。

问题根因

  • WSL2默认会把Windows系统的PATH追加到Linux的PATH变量末尾,如果你安装过带cat工具的Windows软件(比如Git for Windows、Cygwin、MinGW等),且这些软件的路径在PATH中的优先级高于Linux的/usr/bin路径,就会优先调用Windows版本的cat。
  • Windows版本的cat不支持Linux原生的here doc语法,解析输入时会把标准输入识别为-参数但无法匹配到对应文件,最终抛出你遇到的报错。

验证方法

执行which cat查看当前调用的cat路径:

  • 如果输出为/usr/bin/cat,调用的是Linux原生cat,不会出现该问题
  • 如果输出为/mnt/c/开头的路径,说明调用的是Windows下的cat,就是问题的根源

解决方法

临时修复

直接指定调用Linux原生cat即可,命令如下:

/usr/bin/cat <<EOF
abc
abc
abc
EOF

永久修复

  1. 编辑WSL系统配置文件/etc/wsl.conf,添加以下内容:
[interop]
appendWindowsPath = false
  1. 保存文件后,在Windows终端执行wsl --shutdown重启WSL实例,配置就会生效。
  2. 重启后再次执行which cat,确认输出为/usr/bin/cat即可。

内容的提问来源于stack exchange,提问作者Arun Agarwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:36:07