如何解决“糟糕的翻译:没有这样的文件或目录”

时间:2013-06-16 07:53:56

标签: macos perl sh

我试图运行sh脚本并在Mac上出现以下错误:

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

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:66)

使用

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

答案 1 :(得分:44)

  

的/ usr /斌/ perl的^ M:

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

如果你没有看到角色,可能需要用二进制编辑器检查文件。

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

$ vi your_script.sh

一旦进入vi类型:

 :set ff=unix

 :x

答案 2 :(得分:6)

问题是您在Linux / Unix / OSX计算机上尝试使用DOS / Windows文本格式。

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

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

dos2unix yourfile yourfile

如需帮助,请运行:man dos2unix

答案 3 :(得分:5)

您的脚本中似乎有奇怪的行结尾:^M是回车\r。将脚本转换为Unix行结尾(仅\n而不是\r\n,这是以Windows系统结尾的行。)

答案 4 :(得分:2)

另一种方法:

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

答案 5 :(得分:2)

如果您更喜欢Sublime Text - 只需转到View - >行结尾并检查Unix。