我有perl脚本,当我尝试运行这个脚本时没有执行权限(只有rw)“。/ script.pl”我得到“权限被拒绝”,这对我来说很明显。但是,当我使用“perl -e script.pl”运行此脚本时,它可以工作,并且脚本可以通过自己的权限执行。
有人可以解释这种奇怪的行为吗?
答案 0 :(得分:2)
在第一种情况下,您尝试执行脚本。
在第二种情况下(如果我们忽略-e
)你试图执行perl,并告诉它在脚本文件中运行代码。
(-e
导致它尝试将文字文本script.pl
作为Perl代码运行)
答案 1 :(得分:2)
运行命令时
perl script.pl
perl可执行文件是从shell执行的(带有一些exec()系统调用)。然后文件/ usr / bin / perl将需要+ x,因为每个使用exec()执行的文件都需要它。 Perl将使用参数script.pl运行,并且perl被编程为打开在命令行上给它的文件并处理内容。
以这种方式运行文件
./ script.pl
shell将使用一些exec()系统调用直接运行script.pl文件,然后script.pl是需要+ x的文件。
换句话说,如果你想运行像./script.pl这样的文件,你需要
chmod + x script.pl
您还需要一个“shebang”作为脚本的第一行,告诉您要使用哪个命令来运行它。它看起来像这样:
#!/usr/bin/perl