如何从任何位置(任何目录)运行perl脚本

Wah*_*saw 2 ubuntu perl

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

>
Run Code Online (Sandbox Code Playgroud)

然后将目录更改为

... /斌>

然后我通过写作运行perl

..../bin> perl tool.pl file= whatever config= whatever
Run Code Online (Sandbox Code Playgroud)

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

export PERL5LIB = $ PERL5LIB:/ home/Leen/Desktop/Tools/bin

但是当我去终端并直接写下面而没有进入tool文件夹存在的bin文件夹时

>perl tool.pl file=... config=...
Run Code Online (Sandbox Code Playgroud)

它说文件"tool.pl"不存在???

amo*_*mon 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
Run Code Online (Sandbox Code Playgroud)

等等

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

PERL5LIB变量确定Perl查找模块的位置,而不是可执行文件.

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

:~/Desktop/Tools/bin$ ./tool.pl
Run Code Online (Sandbox Code Playgroud)

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

PATH=$PATH:/home/Leen/Desktop/Tools/bin
Run Code Online (Sandbox Code Playgroud)

在es 的末尾添加你的目录PATH,所以你不要否决其他程序.

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

然后,您可以从任何地方调用脚本,而无需完整路径名称:

:~/foo/bar$ tool.pl
Run Code Online (Sandbox Code Playgroud)

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