如何解决"bad interpreter: No such file or directory"



我正在尝试运行sh脚本,并在Mac上得到以下错误:

/usr/bin/perl^M: bad interpreter: No such file or directory

我该如何解决这个问题?

删除^M控制字符
perl -i -pe 'y|r||d' script.pl

/usr/bin/perl ^ M:

从脚本开头的#!行中删除usr/bin/perl末尾的^M。这是一个虚假的ASCII 13字符,使shell发疯。

如果您没有看到该字符,可能需要使用二进制编辑器检查文件。

你可以这样做,将文件转换为Mac的行结束格式:

$ vi your_script.sh

一旦在vi类型:

 :set ff=unix
 :x

问题是你试图在Linux/Unix/OSX机器上使用DOS/Windows文本格式。

在DOS/Windows文本文件中,换行符,也称为换行符,是两个字符的组合:回车(CR)和换行(LF)。在Unix文本文件中,换行符是一个字符:换行符(LF)。

Dos2unix可以为您转换文件的编码,例如:

dos2unix yourfile yourfile

请输入:man dos2unix .

您的脚本中似乎有奇怪的行结尾:^M是一个回车r。将脚本转换为Unix行结束符(仅使用n而不是rn,这是Windows系统上的行结束符)。

如果你更喜欢Sublime Text -只需点击View -> Line ending,然后选中Unix

另一种方法:

sudo ln -s /usr/bin/perl /usr/local/bin/perl`echo -e 'r'`

相关内容

最新更新