#!perl究竟做了什么?

时间:2014-05-08 09:26:57

标签: bash

我最近收到了第一行的perl脚本

#!perl

这当然不起作用,但我想确切知道它的作用。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

这称为shebang,用于(在Unix中)指定应该使用哪个解释器二进制文件来运行脚本。

这是一个非常好的机制,特别是与file system permissions可用于将脚本文件转换为shell(和程序加载器)认为可执行的内容的方式一起。

似乎the interpreter name must be absolute。链接文本说相对名称(如此处的perl)将被解释为./perl,因此如果从perl二进制文件所在的目录执行,它可能会起作用 。不是一个非常常见的用例,但至少如果以这种方式使用它可以工作,即如果你想用脚本包装perl二进制文件,你想要该脚本来运行二进制文件它与脚本在同一个地方,而不是使用绝对路径来选择其他二进制文件。没试过这个。

更典型的方法(至少在Linux中)是使用env程序来选择perl:

#!/usr/bin/env perl

答案 1 :(得分:1)

如果你给这样的shebang线,

#!perl

它将在当前目录中查找perl解释器。如果perl解释器存在于当前目录中,那么perl脚本将开始执行,否则会显示bad interpreter错误。