执行:不存在(没有这样的文件或目录)

exec: does not exist (No such file or directory)

我正在将 WSL 与 docker 一起使用(使用带有乳胶、python 和 pandoc-filters 的复杂 pandoc 配置)并尝试使用 --filter=filters/the_filter.sh 的长命令导致错误:

Error running filter filters/the_filter.sh: ./filters/the_filter.sh: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)

我的过滤器是一个 .sh 包装器,主要是为了确保我使用的是 Python3(可能不需要,但我从 here 那里得到了提示):

#!/bin/sh
python3 filters/the_filter.py $@

Googling the error 显示了很多 GitHub 问题,但没有关于堆栈溢出的明确解释。

原来我的 .sh 文件有 Windows 行结尾:\r\n。 我假设系统试图找到 /bin/sh\r 但错误消息没有解释它。

使用 dos2unix filters/the_filter.sh 更正行尾,我能够摆脱错误。

Here 是相关问题的更多详细信息。