在UNIX中无需指定perl即可在命令行中执行perl

5

有一个关于Windows的类似问题,但对于基于Unix的计算机(特别是OS X)不适用。

我想要输入文件名,例如example.plexample.pl parametertext.txt,并让它知道执行perl。

我在文件中指定了#!/usr/bin/perl,以便找到可执行文件。但实际上,我收到了以下消息:

bash: example.pl: command not found

5
难道应该是#!/usr/bin/perl吗?没有空格(不确定这是否重要),并且是完整路径?此外,您的.pl文件可执行吗?(尝试chmod +x example.pl)。更不用说如果“.”不在您的“PATH”中,则需要运行./example.pl而不是example.pl - Dan Fego
1
你是否设置了文件的可执行权限?“不起作用”是什么意思,能否提供错误信息? - Edward Thomson
@EdwardThomson 我正在尝试执行 last | ctime.pl-bash: ctime.pl: 找不到命令 - Chris
1
你真的不应该在问题中更正你的代码以消除问题。这个条目已经没有任何意义了! - Borodin
@Borodin 那并不是问题,因为文件中是正确的。如何在不键入“perl”的情况下运行.pl文件的问题仍然存在,并在下面得到了回答。 - Chris
显示剩余2条评论
3个回答

11

你可以按照如下步骤进行操作:

  1. 查找解释器/执行器路径,例如 /usr/bin/perl/usr/bin/env perl
  2. 将其添加到文件的第一行中,格式为 #!/usr/bin/perl
  3. 赋予文件执行权限,使用命令 chmod +x example.pl

现在该文件就可以被执行了。

    $ ./example.pl

2
你需要将顶部的一行("shebang")#!/usr/bin/perl 更正为正确的路径(注意你当前的路径中有一个空格,应该改为斜杠)。首先,你需要确保这是你 perl 可执行文件的正确路径(使用命令 which perl 查看它所在的位置),如果它不在那里,请相应地更正路径。然后,你需要确保脚本具有可执行权限。在控制台输入命令 ls -l example.pl,查找第一列(特别是第四个字符)中的 x 是否存在,如果不存在,则需要使用命令 chmod a+x example.pl 使脚本具备可执行权限。最后,要运行程序,你需要使用 ./example.pl 命令。其中的./告诉你的shell程序在当前目录下寻找脚本。

1

我有两个想法要补充:

1) 使用 example.pl test1.txt 时,你的路径应该包含一个点。 echo $PATH /usr/bin:/usr/X11R6/bin:/usr/bin/X11:。

2) 你的文件行尾应该是Unix格式,\n。至少你的shebang行应该准确地包含你的perl路径,以 \n 结尾。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接