2012-09-15 99 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