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脚本剩余的参数。只是想验证我的假设。谢谢你的贡献。