脚本执行脚本而不执行权限

时间:2014-04-23 20:23:35

标签: linux perl

我有perl脚本,当我尝试运行这个脚本时没有执行权限(只有rw)“。/ script.pl”我得到“权限被拒绝”,这对我来说很明显。但是,当我使用“perl -e script.pl”运行此脚本时,它可以工作,并且脚本可以通过自己的权限执行。

有人可以解释这种奇怪的行为吗?

2 个答案:

答案 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