首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用默认路径为ActivePerl 5.20MacOSX (/usr/bin/perl)而不是/usr/local/ActivePerl.?

如何使用默认路径为ActivePerl 5.20MacOSX (/usr/bin/perl)而不是/usr/local/ActivePerl.?
EN

Stack Overflow用户
提问于 2015-05-21 20:01:29
回答 2查看 2.5K关注 0票数 1

今天,我在MacOSX10.9.5上安装了ActivePerl 5.20.2,检查了终端(perl -v)中的perl版本,我看到了5.20.2,所以一切似乎都很好。但是..。当我启动我的CGI脚本时,脚本是在perl构建的( 5.16)下运行的(如果使用#!/usr/bin/perl)。如果我使用#!/usr/local/ActivePerl5.20.2/bin/perl,那么它将运行在所需的5.20.2以下。

问题是:是否可以将脚本中使用的目录从#!/usr/local/ActivePerl5.20.2/bin/perl更改为简单而熟悉的#!/usr/bin/perl,保持在ActivePerl下运行而不是内置。

我需要用新的ActivePerl覆盖系统的默认版本。

如果要更改文件和目录以实现拯救,我将非常感谢您的详细答案(其中包含文件和目录的名称)。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-21 20:25:50

首先,不要在脚本中指定Perl解释器的特定路径:

代码语言:javascript
复制
#! /usr/local/ActivePerl5.20.2/bin/perl

代码语言:javascript
复制
#! /usr/bin/perl

具体说明如下:

代码语言:javascript
复制
#! /usr/bin/env perl

这将在您的$PATH中找到第一个可执行的Perl解释器,然后使用它来执行您的Perl脚本。这样,您不必更改程序,只需更改$PATH变量即可。

下一次,看看安装不同版本Perl的PerlBrew。PerlBrew将允许您在用户控制下安装多个Perl版本,并允许您选择要使用哪个版本的Perl。

我还建议将/usr/local/bin作为$PATH中的第一个条目。然后,将要运行的可执行文件链接到该目录。您可以使用类似的内容来创建链接:

代码语言:javascript
复制
for file in $/usr/local/ActivePerl5.20.2/bin/*
do
    basename=$(basename $file)
    ln -s "$file" "/usr/local/bin/$basename"
done

这样,您想要执行的所有程序都位于同一个目录中,这使得设置$PATH变得非常容易。我甚至将/usr/local/bin放在/usr/bin/bin之前,因为我希望能够覆盖系统的默认版本。

票数 3
EN

Stack Overflow用户

发布于 2015-05-21 20:22:27

问题是:是否可以将脚本中使用的目录从#!/usr/local/ActivePerl5.20.2/bin/perl更改为简单而熟悉的#!/usr/bin/perl,以保持在ActivePerl下运行而不是内置。

甚至不要尝试。那是诅咒,而不是救赎。指定处理脚本的特定解释器的能力是一个重要的特性。

相反,将CGI脚本打包为一个简单的CPAN模块。然后,使用熟悉的

代码语言:javascript
复制
$ /usr/local/ActivePerl5.20.2/bin/perl Makefile.PL
$ make install

例行公事shebang行将被自动调整,以反映用于构建和安装包的perl

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30383288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档