perl – 为什么shebang线总是第一行?

前端之家收集整理的这篇文章主要介绍了perl – 为什么shebang线总是第一行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有简单的perl脚本如下:
#!/usr/bin/perl

use strict;
use warnings;

print "hello ! world\n";

我可以执行这个脚本如下:

>temp.pl
hello ! world
>

如果我添加一些这样的评论

#this script is just for test
#the shebang
#!/usr/bin/perl

use strict;
use warnings;

print "hello ! world\n";

当我尝试执行它给我的输出如下:

> temp.pl
use: Command not found.
use: Command not found.
print: Command not found.
>

这里的一点是shebang线应该永远在顶端,不管是什么.
但是有人可以解释一下为什么吗?

解决方法

shebang必须是第一行,因为它由内核解释,内核会查看可执行文件开头的两个字节.如果这些是#!该行的其余部分被解释为可运行的可执行文件,该脚本文件可用于该程序. (细节略有不同,但这是图片).

由于内核只会看前两个字符,并且没有更多行的概念,所以必须将hash bang放在第1行中.

现在如果内核无法执行以#!开头的文件怎么办? shell尝试分配可执行文件并被内核通知无法执行程序,最后的手段会将文件内容解释为shell脚本.由于shell不是perl,您会收到一堆错误,就像您尝试运行一样

sh < temp.pl
原文链接:https://www.f2er.com/Perl/172591.html

猜你在找的Perl相关文章