我有Strawberry Perl并删除了msys Perl 5.6。如何在MSYS中设置Strawberry Perl?
现在perl
将调用草莓(由于PATH
ENV),但我怎么在其中有#!/bin/perl
或#!/usr/bin/perl
家当线.pl
或其他Perl脚本文件映射perl
命令?
我想制作一个硬连接到perl.exe所在在MSYS /箱或合并整个草莓的MSYS目录里面,但我不知道。
我有Strawberry Perl并删除了msys Perl 5.6。如何在MSYS中设置Strawberry Perl?
现在perl
将调用草莓(由于PATH
ENV),但我怎么在其中有#!/bin/perl
或#!/usr/bin/perl
家当线.pl
或其他Perl脚本文件映射perl
命令?
我想制作一个硬连接到perl.exe所在在MSYS /箱或合并整个草莓的MSYS目录里面,但我不知道。
本精美的作品在计算机上的窗户边,在MSYS方面,你可能需要
检查PATH环境变量和修复包括草莓perl的访问路径
检查shebang行(#!/ usr/bin/perl)中完整路径的脚本。 在msys中绝对的那些路径实际上是相对于Windows中的msys安装目录的。 你可能需要“塞”你的草莓Perl安装来匹配或更改#!在后一种情况下,线
我的建议是使用类似:#!env perl
,检查环境的Perl解释器,减轻处理/ cygdrive/C /我的/窗/路径的负担/不/可见/从/ msys /否则
正确的shebang将是,例如。 #!"C:/strawberry/perl/bin/perl.exe"
。但是,您可能更愿意使用Perl明确运行脚本,而不是依靠shebang,例如。 perl script.pl
或perl "C:\strawberry\perl\bin\cpan"
注意,草莓Perl不会得到正确的认领为自己的脚本,如cpan
和perldoc
。错误报道https://rt.cpan.org/Public/Bug/Display.html?id=82837
的解决方案是从内部MSYS提示帽子的创建符号链接到草莓Perl可执行文件到smaudet为他输入:
首先,删除或重命名Perl的可执行文件(如果有的话)(OP已经完成了);例如:
mv /usr/bin/perl /usr/bin/perl.msys
mv /usr/bin/cpan /usr/bin/cpan.msys
然后在其位置创建符号链接到草莓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
符号链接的地方,家当线#!/usr/bin/perl
和#!/bin/perl
现有脚本将再次合作(后者也适用,因为/bin
和/usr/bin
在MSYS中实际上是相同的位置)。
注意,与更灵活的家当线#!/usr/bin/env perl
编写的脚本做不需要这个,因为env
将直接找到草莓Perl的perl.exe
路径。
一些背景:
Unix的仿真环境,如MSYS和Cygwin做不对于Windows的%PATHEXT%
变量,以确定哪些可执行文件调用(非二进制)与文件。换句话说:文件扩展名对于执行没有意义。
相反,他们完全由文件是否具有认领线去:
/bin/sh
。
*.bat
或*.cmd
文件直接失败,因为他们没有一个Unix家当线,因此受到/bin/sh
而不是cmd.exe
执行。不像在Windows中,这也适用于那些没有扩展名都(可执行文件)文件。