Setenv $ PATH无法正常运作

时间:2015-04-22 13:17:25

标签: perl setenv

我编写了一个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脚本完全相同的文件夹中。

4 个答案:

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

您可能需要检查一些事项:

  1. 执行权限(即:chmod +x script.pl
  2. perl脚本的第一行是#!/usr/bin/perl
  3. 当您尝试启动perl脚本时,您是否输入了包含任何扩展名的文件的全名? (即:script.pl而不是script)我通常不会对$PATH中的目录中的脚本使用扩展名来简化操作。
  4. 如果您向我们展示您输入的内容或错误,那将非常有用。

    编辑:您可以检查的另一件事是脚本的所有权。我只是以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!