运行Lubuntu - 初学者Perl程序员
脚本XXX.pl
位于~/projects/XXX/XXX.pl
第一行是shebang
#!/usr/bin/perl
运行权限设置为任何人。
在目录~/projects/XXX
中,命令
~/projects/XXX$ perl XXX.pl
按需要工作,但命令
~/projects/XXX$ XXX.pl
XXX.pl: command not found
我错过了什么?
答案 0 :(得分:5)
执行Perl脚本的两个常用选项是:
perl XXX.pl
或
./XXX.pl
两种方式都假设您当前的工作目录包含脚本 XXX.pl ,否则它将无效。
正如jm666在评论中已经指出的那样,您通常不会在没有预先./
的情况下从当前工作目录执行程序或脚本,主要是出于安全原因。现在,您可能想知道为什么这是必要的。
<强>解释强>
您的shell使用名为$PATH
的环境变量的内容来查找外部命令(非内置程序)在文件系统中的位置。如果您想查看$PATH
中的内容,只需在shell中输入以下内容:
echo $PATH
现在您可以看到$PATH
变量不包含您当前的工作目录。结果是你的shell无法找到程序 XXX.pl 。通过预先./
,您可以指示shell执行之后的程序。
但是,如果要使用./script.pl
执行Perl脚本,则有两个要求:
ls -l
联系)#!/path/to/your/perl
因为你的shell需要这些信息来查找perl解释器才能运行你的脚本然而,使用
执行脚本时不需要#1和#2perl XXX.pl
因为它直接用你的脚本调用perl解释器。
有关详细信息,请参阅how to make Perl scripts executable on Linux和make the script itself directly executable with chmod。
答案 1 :(得分:1)
你的路径中有.
吗?如果不是,请将其添加到您的路径中,或使用./XXX.pl
代替XXX.pl
。
您是否拥有该文件的执行权限?使用chmod u+x XXX.pl
进行修复。
which perl
会告诉您使用perl XXX.pl
时使用的解释器。这就是你的shebang(#!
)行的路径。