我在下面的路径中有一个perl脚本(/home/Leen/Desktop/Tools/bin/tool.pl) 每次我想运行这个工具,我都会去终端
>
然后将目录更改为
... / bin中>
然后我通过编写
来运行perl..../bin> perl tool.pl file= whatever config= whatever
问题是我想运行这个perl脚本而不需要转到它所在的bin文件夹。所以我可以从任何目录运行perl脚本,只要我输入shell 我去了etc / environment,然后写了下面的
export PERL5LIB = $ PERL5LIB:/ home / Leen / Desktop / Tools / bin
但是当我去终端并直接写下面而没有进入tool.pl存在的bin文件夹时
>perl tool.pl file=... config=...
它说文件“tool.pl”不存在???
答案 0 :(得分: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
在PATH
es的结束处添加您的目录,这样您就不会否决其他程序。
如果您想永久设置此项,可以将此行添加到文件~/.bashrc
(仅适用于您的用户,仅适用于bash
shell)。
然后你可以从任何地方调用你的脚本,没有完整的路径名称:
:~/foo/bar$ tool.pl
在这种情况下,您应该考虑使用更具体的命令名称,以防止名称冲突。