2009-01-21 30 views

回答

19

如果您使用安裝程序從cygwin中刪除Perl,默認情況下它將使用Strawberry Perl。

如果您無法從cygwin中刪除Perl,則可以從Strawberry創建一個到Perl可執行文件的符號鏈接。

從cygwin外殼,使用下面的命令集:

$ mv /usr/bin/perl /usr/bin/perl-cygwin 
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl 

這是假設你使用默認草莓Perl的安裝程序。如果您將它安裝在其他地方,請相應地更新您的perl.exe位置。

檢查以確保該鏈接是通過檢查Perl的版本中正常工作:

$ perl -v 

應該說這是perl的,(版本)MSWin32 86多線程內置(或類似)和不是爲cygwin-thread-multi-64int而建。

+0

工作就像一個魅力!謝謝! – 2009-01-21 15:28:29

+0

不錯...非常有幫助..謝謝你。 – Paul 2010-12-15 15:35:02

-2

我沒有我的cygwin機器附近,所以我不能測試這個,但也許你可以用腳本前端perl命令:轉到/ bin下的cygwin和移動perl.exe那裏的東西否則像perl-org.exe,然後設置一個shell腳本,用相同的參數來執行你的另一個perl。

1

您可以更改PATH將草莓目錄放在第一位。草莓試圖通過將其目錄放在PATH的末尾來使它更好。但是,如果從.zip文件安裝,它根本不會更改PATH。

您可以移動/ usr/bin/perl,但這是一個壞主意,因爲當cygwin嘗試更新它認爲是它的perl時它會中斷。本週我就遇到過這種情況,在我的Mac上曾發生在我身上,直到我停止使用系統設置並完全獨立安裝我自己的東西。

0

這可能不是首選解決方案,但您應該可以修改#! line:

#!/cygdrive/c/strawberry/perl/bin/perl5.10.0 

我總是提到perl的顯式位置和安裝,而不是依賴於/ usr/bin中的內容。

0

我有,我用它來修改Perl腳本取其Perl是第一次在我的道路的第一行兩個腳本:rightperl會有限制於Perl中是第一次在我的$ PATH 現在envperl將改變線路#!/ usr/bin/env perl,因此只有在腳本被調用時纔會使用Perl。在Cygwin(以及一般的Unix shell)下工作得很好。

1

我可以添加的一件好事是,如果你得到正確的perl首先在路徑中,它應該處理您可能已經安裝了草莓perl運行在CMD shell中的站點特定的CPAN模塊。

「哪個perl」是你的朋友。

如果遇到問題,可以設置PERL5LIB環境變量,但不應該有必要。

我仍將DOS風格的文件路徑作爲參數傳入perl腳本,即「d:\ data \ myfile.txt」,而不是「/cygdrive/d/data/myfile.txt」。所以,奇怪的是,這樣的搭配路徑表示法的工作原理:

慶典> /cygdrive/d/scripts/myscript.pl d:\數據\ myfile.txt的

0

如果你不想更動任何路徑或做任何永久的事情都很容易暫時破解。在Cygwin sh提示符處鍵入「perl」。它將按照執行順序列出它在PATH中看到的所有Perl.exe。改變你想要使用的perl之前你不想看到的名字。但是請記得在完成之後將它們改回來,否則你可能會遇到一些問題。

1

其中很多都是很好的解決方案,但我寧願採取一個簡單的方法,我不必多次修改。

您需要做的只是在.bashrc文件中添加/修改一行。

# Prepend strawberry perl to cygwin's path 
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH 

從您的shell源代碼.bashrc文件(或啓動一個新的shell)並運行您的程序。

source ~/.bashrc 
perl script.pl 
相關問題