如何在MSYS中设置Strawberry Perl?

前端之家收集整理的这篇文章主要介绍了如何在MSYS中设置Strawberry Perl?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有 Strawberry Perl删除了msys Perl 5.6.

现在perl将调用Strawberry(由于PATH env),但是如何在.pl或其他具有#!/ bin / perl或#!/usr/bin/perl shebang行的Perl脚本文件中映射perl命令?

我想在msys / bin中创建perl.exe的硬链接或者将整个Strawberry整合到msys目录中,但我不确定.

解决方法

解决方案是从帽子的MSYS Tip中创建一个到草莓Perl可执行文件的符号链接smaudet获取他的输入:

首先,删除重命名MSYS安装附带的Perl可执行文件(如果有的话)(OP已经完成);例如.:

mv /usr/bin/perl /usr/bin/perl.msys 
mv /usr/bin/cpan /usr/bin/cpan.msys

然后在其位置创建一个符合Strawberry Perl可执行文件的符号链接

ln -s /c/strawberry/perl/bin/perl.exe /usr/bin/perl

# Unfortunately,doing the same for `cpan` doesn't work directly,because
# Strawberry Perl's `cpan` executable is a *batch* file,`cpan.bat`,which
# cannot be directly invoked from MSYS.
# To invoke it from MSYS (assuming it is in the %PATH%):
#   cmd /c 'cpan.bat ...'
# With an explicit path:
#   cmd /c 'c:\strawberry\perl\bin\cpan.bat ...'
#
# Here's how to create a stub script that still allows invocation as 
# `cpan`:
echo 'cmd /c "C:\strawberry\perl\bin\cpan.bat $*"'>/usr/bin/cpan && chmod +x /usr/bin/cpan

一旦/usr/bin/perl符号链接到位,带有shebang行#!/usr/bin/perl和#!/ bin / perl的现有脚本将再次工作(后者也可以工作,因为/ bin和/usr/bin在MSYS中实际上是相同的位置).

请注意,用更灵活的shebang line#!/usr/bin/env perl编写的脚本不需要这个,因为env将直接在路径中找到Strawberry Perl的perl.exe.

一些背景:

诸如MSYS和Cygwin之类的Unix仿真环境不尊重Windows’%PATHEXT%变量来确定调用(非二进制)文件的可执行文件.换句话说:文件扩展名对于那里的执行没有任何意义.

相反,他们只是通过文件是否有一个shebang线:

>如果有,则使用shebang行中指定的可执行文件.
>如果没有,则使用默认(类似POSIX)shell / bin / sh.

>因此,尝试直接调用* .bat或* .cmd文件失败,因为它们没有Unix shebang行,因此由/ bin / sh而不是cmd.exe执行.

与Windows不同,这也适用于根本没有文件扩展名的(可执行)文件.

猜你在找的Perl相关文章