![Shell 坏解释器问题](https://linux22.com/image/517613/Shell%20%E5%9D%8F%E8%A7%A3%E9%87%8A%E5%99%A8%E9%97%AE%E9%A2%98.png)
我将系统从 ubuntu 9 移至 debian 5,每次尝试执行脚本时 cron 都会抛出...
-bash: ./somescript.sh: /bin/sh^M: bad interpreter: No such file or directory
我所有的脚本都以
#!/bin/sh
有什么线索吗?我应该更改 cron 正在运行的 shell 吗?它正在使用另一个 shell?
答案1
这^M
让我想到你的脚本使用CR-LF 行结尾。这通常发生在您使用 Windows 文本编辑器编辑文件时。
为了修复此问题,请安装 tofrodos 包并转换文件:
sudo aptitude install tofrodos
fromdos -b /path/to/script.sh
答案2
您的文档中有回车符(可能是使用 Windows 程序编辑的)。您需要运行:
cat somecript.sh | tr -d '\r' > somescript2.sh
确保使用新的文件名,就像我在示例中所做的那样(somescript2.sh
)。你可以阅读这个博客文章了解完整故事。