如何修改我的cygwin环境以使用Strawberry Perl而不是打包的Perl发行版?

时间:2009-01-21 02:45:38

标签: perl cygwin environment-variables strawberry-perl

我目前使用Strawberry Perl作为我的主要Perl发行版。但是,我有一些应用程序可以通过cygwin调用Perl。这些通常会失败,因为他们正在调用与cygwin一起打包的Perl版本,并且只查看cygwin的lib文件夹。如何修改我的cygwin环境以调用Strawberry Perl(并使用C:/ strawberry / perl / lib dirs)?

8 个答案:

答案 0 :(得分:20)

如果你使用安装程序从cygwin中删除Perl,它将默认使用Strawberry Perl。

如果您无法从cygwin中删除Perl,您可以创建一个指向Strawberry的Perl可执行文件的符号链接。

从cygwin shell中,使用以下命令集:

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

假设您使用了默认的Strawberry Perl安装程序。如果您已将其安装在其他位置,请相应地更新perl.exe位置。

通过检查Perl版本检查以确保链接正常工作:

$ perl -v

应该说这是为MSWin32-x86-multi-thread (或类似)构建的perl,(版本)和为cygwin-thread构建的而不是 - 多64int

答案 1 :(得分:1)

您可以更改PATH以将Strawberry目录放在第一位。通过将其目录放在PATH的末尾,草莓试图变得更好。但是,如果从.zip文件安装,则根本不会更改PATH。

你可以移动/ usr / bin / perl,但这是一个坏主意,因为当cygwin尝试更新它认为是perl的内容时它会中断。我本周发生了这件事,过去常常在我的Mac上发生,直到我停止使用系统设置并完全独立安装我自己的东西。

答案 2 :(得分:1)

我可以添加的一件好事是,如果你在路径中得到正确的perl,它应该处理你可能已经安装了在CMD shell中运行的草莓perl的特定于站点的CPAN模块。

“哪个perl”是你的朋友。

如果您遇到此问题,可以设置PERL5LIB环境变量,但不一定非必要。

我仍然将DOS样式的文件路径作为参数传递到perl脚本中,即“d:\ data \ myfile.txt”,而不是“/cygdrive/d/data/myfile.txt”。奇怪的是,这种路径符号的混合有效:

的bash> /cygdrive/d/scripts/myscript.pl d:\ data \ myfile.txt

答案 3 :(得分: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 

答案 4 :(得分:0)

这可能不是首选解决方案,但您应该能够修改#!行:

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

我总是提到perl的显式位置和安装,而不是依赖于/ usr / bin中的内容。

答案 5 :(得分:0)

我有两个脚本用于修改Perl脚本的第一行到我的路径中的第一行:rightperl到我的$ PATH 中的第一个的Perl的硬编码envperl会将行更改为#!/ usr / bin / env perl,因此只能在调用脚本时选择要使用的Perl。在Cygwin(以及一般的Unix shell)下工作得非常好。

答案 6 :(得分:0)

如果你不想乱用任何路径或做任何永久性的事情,那么有一个简单的 TEMPORARY hack 。在Cygwin sh提示符下键入“where perl”。它将按照执行顺序列出它在PATH中看到的所有Perl.exe。更改要在您要使用的perl之前列出的不希望看到的名称。但是你要记得在完成后改回它们,否则你可能会遇到一些问题。

答案 7 :(得分:-2)

我附近没有我的cygwin机器所以我无法测试这个,但也许你可以用脚本前端perl命令:转到cygwin下的/ bin并将perl.exe移动到其他地方比如perl-org.exe,然后设置一个shell脚本,用相同的参数来执行你的另一个perl。