加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在MSYS中设置Strawberry Perl?

发布时间:2020-12-15 21:50:42 所属栏目:大数据 来源:网络整理
导读:我有 Strawberry Perl并删除了msys Perl 5.6. 现在perl将调用Strawberry(由于PATH env),但是如何在.pl或其他具有#!/ bin / perl或#!/usr/bin/perl shebang行的Perl脚本文件中映射perl命令? 我想在msys / bin中创建perl.exe的硬链接或者将整个Strawberry整
我有 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:strawberryperlbincpan.bat ...'
#
# Here's how to create a stub script that still allows invocation as 
# `cpan`:
echo 'cmd /c "C:strawberryperlbincpan.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不同,这也适用于根本没有文件扩展名的(可执行)文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读