Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为shebanged脚本指定特定版本_Perl_Environment Variables_Executable - Fatal编程技术网

Perl 为shebanged脚本指定特定版本

Perl 为shebanged脚本指定特定版本,perl,environment-variables,executable,Perl,Environment Variables,Executable,如果调用可执行脚本: $ ./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.

如果调用可执行脚本:

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

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

您对发生的情况的解释有点不正确。内核只执行命令
/usr/bin/env perl SCRIPT剩余ARGS
。是
env
在路径中搜索名为
perl
的可执行文件,并执行
/path/to/perl脚本剩余的参数。只是想验证我的假设。谢谢你的贡献。