我正在尝试运行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'`