WSL执行sh报错^M:bad interpreter:No such file or directory

在 Windows 平台上使用 VSCode 编写的 sh 文件,git bash 执行没问题,使用 WSL Linux 子系统执行时,报错 ^M:bad interpreter。
问题复现
使用 Windows Linux 子系统执行 sh 文件,报错^M:bad interpreter:No such file or directory
,如下图所示:
而同样是 Windows 平台,使用 git 附带的 git bash 执行此文件,无问题。
问题原因
VSCode 创建的文件,默认使用 CRLF 双字符表示换行,在 VSCode 右下角可以看到当前文件采用的换行符:
Linux 子系统内的 Ubuntu,默认使用 LF 单字符表示换行,遇到 CRLF,执行时报解析错误。
解决方法
在 VSCode 右下角点击 CRLF
按钮,而后在弹出的选项处选择 LF
选项:
之后,使用Ctrl + S
保存文件即可。