--- title: "Linux 下 Bash 脚本 bad interpreter 报错的解决方法" tags: ['Linux'] published: 2022-03-17 19:43:40 updated: 2022-03-17 00:00:00 excerpt: "本文理论上适合所有 Linux 操作系统。" --- > 本文件是烧饼博客文章的 Markdown 原文,正式版本见 https://u.sb/linux-bash-bad-interpreter/ > 全站文章与页面索引见 https://u.sb/llms.txt,建议先读索引再继续抓取。 本文理论上适合所有 Linux 操作系统。 ## 问题复现 有时候为了图方便,我们会直接在本机 `git clone` 一个 Github 的私有仓库,然后再使用 `lrzsz` 或 `sftp` 上传到服务器上,此时如果你本机是 Windows 系统,服务器是 Linux 系统,那么 `git clone` 下来的脚本文件编码就自动给你换成 Windows 的 `CRLF`,然后在 Linux 服务器上执行脚本时,会报错 ```bash /bin/bash^M: bad interpreter: No such file or directory ``` ## 解决方法一 使用 `VS Code` 或者其他类似的软件,打开脚本手工转换编码为 `UNIX (LF)`,一般情况下你可以在编辑器的右下角找到: ![VS Code 右下角显示的 CRLF 编码标识](https://s.bh.sb/uploads/2022/03/17/qvFdgsTJ8b7KOzU.png) 然后换成 LF 并保存: ![VS Code 选择行尾序列为 LF 的菜单](https://s.bh.sb/uploads/2022/03/17/agMbVZKXU3dLTqf.png) 再重新上传即可。 ## 解决方法二 直接在 Linux 终端下运行: ```bash sed -i -e 's/\r$//' 脚本文件名 ``` 好了,就完事了 = =