Flo*_*ler 1 unix bash perl env shebang
我有一个perl脚本,其中包含第一行,如下所示:
#!/usr/bin/env perl
Run Code Online (Sandbox Code Playgroud)
我已经读过,这是为了在环境中找到perl而执行的.但现在,当我在命令行执行此操作时/usr/bin/env perl,perl本身会被执行(位于/usr/bin/perl).但是当我使用脚本启动时./myscript.pl,它会显示以下错误:
/usr/bin/env: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这导致它无法找到perl,因为当我输入时也会出现此错误/usr/bin/env xxxxxx.
有人可以解释一下,当我在命令行或脚本中运行它时,究竟有什么区别?
最可能的原因是你以某种方式获得了DOS行结尾(CRLF)myscript.pl.这会导致env搜索名为perl^M(其中^M表示CR字符)的文件,但您没有.