为shebanged脚本指定特定版本

时间:2011-01-08 00:07:20

标签: perl environment-variables executable

如果我调用可执行脚本:

$ ./myscript

在顶部有以下定义:

#! /usr/bin/env perl

我有以下perls:

$ 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版本为perl4.10.0?我正在寻找一个答案,不涉及使用特定perl版本的绝对路径调用脚本,不更改符号链接,也不是特定于语言(意味着它适用于/usr/bin/env ruby,{{1等等)。

1 个答案:

答案 0 :(得分:3)

否 - #! /usr/bin/env perl表示“使用执行/usr/bin/env perl的结果作为此脚本的解释器”,因此您需要向env(或其他任何脚本)传授额外的知识选择在命令行中调用)知道如何根据传递的参数查找可执行文件。对于匹配“perl *”的文件,/usr/bin/env perl不会在$ PATH中查找 - 它会查找名为'perl'的可执行文件。