如何使用 ActivePerl 5.20 的默认路径 Mac OS X (/usr/bin/perl) 而不是 /usr/local/ActivePerl...?
How to use default path for ActivePerl 5.20 Mac OS X (/usr/bin/perl) instead of /usr/local/ActivePerl...?
我今天在 Mac OS X 10.9.5 上安装了 ActivePerl 5.20.2
在终端中检查 perl 的版本 (perl -v
) 我看到 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 覆盖系统的默认版本。
如果要更改以实施救赎,我将不胜感激您详细的回答(包括文件名和它们所在的目录)。
谢谢!
The question is: is it somehow possible to change the directory for using in my scripts from #!/usr/local/ActivePerl5.20.2/bin/perl
to simple and familiar #!/usr/bin/perl
keeping running under ActivePerl instead of built in.
甚至不要尝试。那就是诅咒,而不是救赎。指定将处理脚本的特定解释器的能力是一项重要功能。
相反,将您的 CGI 脚本打包为一个简单的 CPAN 模块。然后,使用熟悉的
安装它
$ /usr/local/ActivePerl5.20.2/bin/perl Makefile.PL
$ make install
例行公事。 shebang 行将自动调整以反映用于构建和安装包的 perl
。
首先,不要在脚本中指定 Perl 解释器的特定路径:
#! /usr/local/ActivePerl5.20.2/bin/perl
或
#! /usr/bin/perl
指定这个:
#! /usr/bin/env perl
这将在您的 $PATH
中找到第一个可执行的 Perl 解释器,然后使用它来执行您的 Perl 脚本。这样,您不必更改程序,只需更改 $PATH
变量即可。
下次,请查看 PerlBrew 以安装不同版本的 Perl。 PerlBrew 将允许您在用户控制下安装多个版本的 Perl,并让您 select 您想要使用哪个版本的 Perl。
我还建议将 /usr/local/bin
作为 $PATH
中的第一个条目。然后,link 您想要 运行 那个目录的可执行文件。您可以使用类似这样的东西来创建您的 links:
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
之前,因为我希望能够 覆盖 系统的默认版本。
我今天在 Mac OS X 10.9.5 上安装了 ActivePerl 5.20.2
在终端中检查 perl 的版本 (perl -v
) 我看到 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 覆盖系统的默认版本。
如果要更改以实施救赎,我将不胜感激您详细的回答(包括文件名和它们所在的目录)。
谢谢!
The question is: is it somehow possible to change the directory for using in my scripts from
#!/usr/local/ActivePerl5.20.2/bin/perl
to simple and familiar#!/usr/bin/perl
keeping running under ActivePerl instead of built in.
甚至不要尝试。那就是诅咒,而不是救赎。指定将处理脚本的特定解释器的能力是一项重要功能。
相反,将您的 CGI 脚本打包为一个简单的 CPAN 模块。然后,使用熟悉的
安装它$ /usr/local/ActivePerl5.20.2/bin/perl Makefile.PL
$ make install
例行公事。 shebang 行将自动调整以反映用于构建和安装包的 perl
。
首先,不要在脚本中指定 Perl 解释器的特定路径:
#! /usr/local/ActivePerl5.20.2/bin/perl
或
#! /usr/bin/perl
指定这个:
#! /usr/bin/env perl
这将在您的 $PATH
中找到第一个可执行的 Perl 解释器,然后使用它来执行您的 Perl 脚本。这样,您不必更改程序,只需更改 $PATH
变量即可。
下次,请查看 PerlBrew 以安装不同版本的 Perl。 PerlBrew 将允许您在用户控制下安装多个版本的 Perl,并让您 select 您想要使用哪个版本的 Perl。
我还建议将 /usr/local/bin
作为 $PATH
中的第一个条目。然后,link 您想要 运行 那个目录的可执行文件。您可以使用类似这样的东西来创建您的 links:
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
之前,因为我希望能够 覆盖 系统的默认版本。