我编写了一个shell脚本,它将<aui:input name="staticInput" label="Static Input" value="" size="40" showRequiredLabel="false">
<aui:validator name="custom" errorMessage="please-fill-out-all-required-fields">
function (val, fieldNode, ruleValue) {
if (val.length > 0) {
//open e-mail client
return true;
}
return false;
}
</aui:validator>
</aui:input>
变量设置为包含shell和Perl脚本的目录。
我能够运行shell脚本,并将当前工作目录设置为任意随机目录,但Perl脚本不同。
运行这两个之间有什么区别吗?
抛出的错误是
$PATH
虽然该文件存在于与shell脚本完全相同的文件夹中。
答案 0 :(得分:0)
如果我运行script.pl,则说找不到命令。
就像使用shell脚本一样,您需要使Perl脚本可执行(chmod u+x script.pl
),并且需要有一个shebang(#!/usr/bin/perl
)。
$ export PATH=/bin:/usr/bin:$HOME/bin
$ cat >$HOME/bin/script.pl
#!/usr/bin/perl
print "Hello, world!\n";
^D
$ chmod u+x $HOME/bin/script.pl
$ script.pl
Hello, world!
答案 1 :(得分:0)
您可能需要检查一些事项:
chmod +x script.pl
)#!/usr/bin/perl
。script.pl
而不是script
)我通常不会对$PATH
中的目录中的脚本使用扩展名来简化操作。如果您向我们展示您输入的内容或错误,那将非常有用。
编辑:您可以检查的另一件事是脚本的所有权。我只是以root身份编写了一个脚本,它抛出了一些错误,就像你遇到的那样。
[root@computer perms-test]# chmod 744 perms.pl # As Root, give permissions
[root@computer perms-test]# ll
-rwxr--r-- 1 root root 96 Apr 22 17:41 perms.pl
[root@computer perms-test]# exit
exit
[user@computer:perms-test]ll
-rwxr--r-- 1 root root 96 Apr 22 17:41 perms.pl
[user@computer:perms-test]./perms.pl # User can't run script
bash: ./perms.pl: Permission denied
[user@computer:perms-test]echo 'PATH=/home/user/perms-test:$PATH' >> ~/.bashrc
[user@computer:perms-test]. ~/.bashrc # Reinitialise .bashrc
[user@computer:perms-test]mkdir random-dir
[user@computer:perms-test]cd random-dir/
[user@computer:random-dir]perms.pl
bash: /home/user/perms-test/perms.pl: Permission denied
[user@computer:random-dir]perl perms.pl # In a different dir, can't find script
Can't open perl script "perms.pl": No such file or directory
[user@computer:random-dir]cd ..
[user@computer:perms-test]perl perms.pl
the script allowed you to run it.
答案 2 :(得分:0)
当您运行脚本为&#34; perl script.pl&#34;时,系统将使用路径环境来查找perl解释器,但不能找到您的脚本。脚本名称将作为其arg传递给解释器。如果脚本不在cwd中,则需要包含其路径。
刚刚运行&#34;脚本&#34;显示权限被拒绝并正在运行&#34; script.pl&#34;显示命令未找到。
这告诉我两件事。 1)脚本的名称不包含.pl ext和2)在没有ext的情况下调用时,它确实在路径中找到了脚本,但是它的权限没有正确设置以便你执行它
正如其他人所说,您需要分配正确的权限以允许您执行脚本。
答案 3 :(得分:0)
抛出的错误是
Can't open perl script "script.pl" : No such file or directory
这与你所做的相似:
$ export PATH=/bin:/usr/bin:$HOME/bin
$ cat >$HOME/bin/script.pl
#!/usr/bin/perl
print "Hello, world!\n";
^D
$ chmod u+x $HOME/bin/script.pl
$ perl script.pl
Can't open perl script "script.pl": No such file or directory
那是错的。搜索路径,但搜索perl
。这就是你应该使用的:
$ script.pl
Hello, world!