树莓派运行soundboard.sh脚本报错/bin/sh^M: 如何解决?
解决bash: ./soundboard.sh: /bin/sh^M: Bad Interpreter错误
这个错误的根源很明确:你的soundboard.sh脚本使用了Windows风格的换行符(CRLF),而树莓派的Linux系统只识别Unix风格的换行符(LF)。系统读取脚本第一行的#!/bin/sh时,会把末尾隐藏的^M(回车符)当成解释器路径的一部分,自然找不到/bin/sh^M这个不存在的文件。
下面是几种快速修复的方法:
方法1:用dos2unix工具转换(最简便)
如果你的树莓派还没装dos2unix,先安装:
sudo apt update && sudo apt install dos2unix
然后转换脚本的换行格式:
dos2unix soundboard.sh
转换完成后,直接运行脚本即可:
./soundboard.sh
方法2:用sed命令手动清除回车符
如果不想装新工具,可以用Linux自带的sed命令直接替换掉所有行末尾的\r(也就是^M):
sed -i 's/\r$//' soundboard.sh
方法3:在编辑器里手动设置换行格式
用nano编辑器:
- 打开脚本:
nano soundboard.sh - 按下
Ctrl+O准备保存,此时按下Ctrl+M切换换行格式(编辑器底部会显示File Format: Unix) - 按
Enter确认保存,最后Ctrl+X退出
用vim编辑器:
- 打开脚本:
vim soundboard.sh - 输入命令
:set fileformat=unix并回车 - 输入
:wq回车保存并退出
另外提醒一句:之后编辑这类脚本时,尽量用支持Unix换行格式的编辑器,或者在保存时选择Unix格式,避免再出现同样的问题。
内容的提问来源于stack exchange,提问作者Christopher Klemenz
相关产品推荐
相关产品推荐

