Shell 坏解释器问题

Shell 坏解释器问题

我将系统从 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)。你可以阅读这个博客文章了解完整故事。

相关内容