2

我在以下路径(/home/Leen/Desktop/Tools/bin/tool.pl)中有一个 perl 脚本,每次我想运行这个工具时,我都会去终端

>

然后将目录更改为

..../bin>

然后我通过编写运行 perl

..../bin> perl tool.pl file= whatever config= whatever

问题是我想运行这个 perl 脚本而不需要去它所在的 bin 文件夹。所以我可以从任何目录运行 perl 脚本,一旦我进入 shell,我就进入 etc/environment 并编写了以下内容

导出 PERL5LIB=$PERL5LIB:/home/Leen/Desktop/Tools/bin

但是当我去终端并直接编写以下内容时,无需进入 tool.pl 所在的 bin 文件夹

>perl tool.pl file=... config=...

它说文件“tool.pl”不存在???

4

1 回答 1

9

程序的第一个参数perl是可执行文件的路径。这些调用是等效的:

:~$ perl /home/Leen/Desktop/Tools/bin/tool.pl
:~$ perl ~/Desktop/Tools/bin/tool.pl
:~$ perl ./Desktop/Tools/bin/tool.pl
:~/Desktop/Tools/bin$ perl tool.pl
:~/Desktop/Tools/bin$ perl ./tool.pl

等等

在 shell 中,波浪号~扩展到您的主目录,并./表示当前目录。在 *nix shell(包括 ubuntu 上的各种终端仿真器)上,命令提示符通常$处于正常模式,#作为 root 用户和很少使用%>是辅助命令提示符,例如在继续多行参数时,与 Windows 上的 cmd.exe 不同。

这个PERL5LIB变量决定了 Perl 在哪里寻找模块,而不是可执行文件。

您可以通过 将脚本设置为可执行文件chmod +x FILENAME。然后,您可以在不指定程序的情况下调用脚本perl

:~/Desktop/Tools/bin$ ./tool.pl

您可以修改PATH变量以更改 shell 查找可执行文件的位置。通常PATH包含/usr/bin/和其他目录。您可以通过添加自己的目录

PATH=$PATH:/home/Leen/Desktop/Tools/bin

在es的末尾添加你的目录PATH,这样你就不会推翻其他程序。

如果要永久设置,可以将此行添加到文件中~/.bashrc(仅适用于您的用户且仅适用于bashshell)。

然后你可以从任何地方调用你的脚本,而不需要完整的路径名:

:~/foo/bar$ tool.pl

在这种情况下,您应该考虑使用更具体的命令名称,以防止名称冲突。

于 2012-09-15T10:31:56.740 回答