/ usr/bin/env perl可以作为命令工作,但不能在perl脚本中工作

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.

有人可以解释一下,当我在命令行或脚本中运行它时,究竟有什么区别?

cjm*_*cjm 7

最可能的原因是你以某种方式获得了DOS行结尾(CRLF)myscript.pl.这会导致env搜索名为perl^M(其中^M表示CR字符)的文件,但您没有.

  • ......可以使用`dos2unix`修复它 (2认同)