2012-09-15 62 views
2

我在下面的路径中存在perl脚本(/home/Leen/Desktop/Tools/bin/tool.pl) 每次我想运行此工具我去到终端如何从任何地方运行perl脚本(任何目录)

> 

,然后更改目录

... /箱>

然后,我通过写

..../bin> perl tool.pl file= whatever config= whatever 
请运行perl

问题是我想运行这个perl脚本而不需要去它存在的bin文件夹。所以我可以从任何目录下运行Perl脚本,一旦我进入外壳 我去等/环境,我写的follwoing

出口PERL5LIB = $ PERL5LIB:/家庭/利恩/桌面/工具/斌

但是,当我去到终端和写入follwoing直行,而不去bin文件夹,其中tool.pl存在

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

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

回答

8

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 

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

PERL5LIB变量确定Perl在哪里查找模块,而不是用于可执行文件。

您可以通过设置chmod +x FILENAME脚本为可执行。然后,您可以调用脚本,而无需指定perl程序:

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

您可以修改PATH变量来改变其中壳查找可执行文件。 PATH通常包含/usr/bin/和其他目录。您可以通过

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

添加自己的目录中年底PATH ES的添加您的目录,所以你不要否决其他程序。

如果您想永久设置此行,可以将此行添加到文件~/.bashrc(仅限您的用户并且仅限于bash shell)。

然后你可以从任何地方调用脚本,没有一个完整的路径名:

:~/foo/bar$ tool.pl 

你应该考虑在这种情况下,使用一个更具体的命令名称,以避免名称冲突。

+0

只有一个问题应该改变[chmod + x FILENAME]为[chmod + x tool.pl]?我应该在哪里写?我会问另一个问题,但在另一个评论先生! – Wahedsaw

+0

我去了环境文件,我发现下面的[PATH =“/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin:/ usr/games” ]因此,我应该在末尾写[[/ home/Leen/Desktop/Tools/bin]]来完成列表,因此最终的PATH将是[PATH =“/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ bin:/ usr/games:/ home/Leen/Desktop/Tools/bin“],或者我应该将它写为[PATH =”/ usr/local/sbin :/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin:/ usr/games“$ PATH = $ PATH:/ home/Leen/Desktop/Tools/bin]。非常感谢先生。 – Wahedsaw

+0

'chmod + x FILENAME'是一个shell命令。因此,将其输入终端,或修改文件管理器中的权限,例如鹦鹉螺。你应该在'tool.pl'的目录中,但是'FILENAME'可以是文件的任何路径。如果您需要有关shell中命令的信息,则可以键入'info COMMAND'(或者在内置程序中为“help COMMAND”)。 'COMMAND --help'通常也适用。 – amon