我试图运行sh
脚本并在Mac上出现以下错误:
/usr/bin/perl^M: bad interpreter: No such file or directory
我该如何解决这个问题?
答案 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。