2011-01-08 20 views
1
特定版本

如果我調用可執行腳本:指定爲shebanged腳本

$ ./myscript 

其在頂部以下確定指標:

#! /usr/bin/env perl 

,我有以下皮爾斯:

$ ls -l /usr/bin | grep perl 

-rwxr-xr-x. 2 root root  8416 2010-07-09 05:18 perl --> perl5.10.0 
-rwxr-xr-x. 2 root root  8416 2010-07-09 05:18 perl5.10.0 
-rwxr-xr-x. 2 root root  8416 2010-07-09 05:18 perl4.10.0 

是否有可能設置某種環境變量(或任何其他方式)來說,perl v使用的ersion將是perl4.10.0?我正在尋找一個答案,不涉及調用具有特定perl版本的絕對路徑的腳本,不會更改符號鏈接,也不會更改語言(意味着它可以用於/usr/bin/env ruby,/usr/bin/env python等)。

回答

3

否 - #! /usr/bin/env perl表示「使用的結果從執行/usr/bin/env perl作爲解釋此腳本」,那麼你就需要額外的知識傳授給env(或您選擇在命令行中調用任何其他腳本)知道如何根據您傳遞的參數查找可執行文件。 /usr/bin/env perl不會在您的$ PATH中查找匹配「perl *」的文件 - 它會查找名爲的可執行文件,正好是'perl'。

+0

你對發生的事情的解釋有點偏離。內核只執行`/ usr/bin/env perl SCRIPT REMAINING ARGS`命令。它是`env`,用於搜索名爲`perl`的可執行文件的路徑並執行`/ path/to/perl SCRIPT REMAINING ARGS`。 – cjm 2011-01-08 04:25:08