我有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中,這也適用於那些沒有擴展名都(可執行文件)文件。