我目前使用 草莓 Perl 作为我的主要 Perl 发行版。然而,我有一些应用程序通过 cygwin 进行 Perl 调用。这些通常会失败,因为它们调用与 cygwin 一起打包的 Perl 版本,并且只在 cygwin 的 lib 文件夹中查找。如何修改我的 cygwin 环境来调用 Strawberry Perl(并使用 C:/strawberry/perl/lib 目录)?

有帮助吗?

解决方案

如果您使用它将使用的Perl草莓默认设置程序的cygwin除去的Perl。

如果你无法从cygwin的除去Perl中,可以创建的符号链接从草莓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的线程 - 多64int

其他提示

您可以更改您的PATH首先把草莓目录。草莓试图通过把它的目录放在路径的末尾是好的。如果从.zip文件安装的,但是,它并没有改变路径的。

您可以移动的/ usr / bin中/ perl的,但是这是一个坏主意,因为它在Cygwin的尝试更新它认为是它的perl的突破。我只是有这个星期发生在我身上,并用发生在我身上我的Mac上,直到我停止与系统设置播放和安装我自己的东西完全独立的。

一件好事,我可以补充的是,如果你得到正确的Perl是第一位的路径,它应该处理你可能已经在一个CMD壳运行草莓perl的安装站点特定的CPAN模块。

“这perl” 会是你的朋友。

如果您遇到了麻烦,这一点,你可以设置PERL5LIB环境变量,但它不应该是必要的。

我仍然在DOS样式文件路径作为参数传递到perl脚本,即,“d:\数据\ myfile.txt的”,而不是“/cygdrive/d/data/myfile.txt”。所以,奇怪的是,这样的搭配路径符号的作品:

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

许多是很好的解决方案,但我宁愿采取一种简单的一个,我没有修改一次以上。

所有你需要做的就是添加/修改您的.bashrc文件一行。

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

从shell,源.bashrc文件(或启动一个新的壳)和运行程序。

source ~/.bashrc
perl script.pl 

这可能不是一个最佳的解决方案,但你应该能够修改#!行:

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

我总是指的Perl的一个明确的位置和安装,而不是依靠什么在/ usr / bin中。

我有两个脚本,用于将 Perl 脚本的第一行修改为路径中第一行的 Perl: 右佩尔 硬编码到我的 $PATH 中第一个 Perl 现在, 环境变量 会将行更改为 #!/usr/bin/env perl,以便仅在调用脚本时选择要使用的 Perl。在 Cygwin 下(以及一般的 Unix shell)下工作得非常好。

如果您不想更动任何路径或做任何事情永久有一个简单的临时黑客。在Cygwin的SH提示符下键入“里的Perl”。它会列出所有它认为在PATH在他们的执行顺序的perl.exe所在。改变你不想被看到的那些要使用Perl之前获得上市的名称。但千万记得要改变他们回来时,你完成,或者你可能在路上的几个问题。

我没有我的Cygwin的机器附近,所以我不能对此进行测试,但也许你可以用一个脚本前端perl的命令:去在Cygwin的/ bin和有移动perl.exe所在到别的如Perl-org.exe,然后设置具有相同的参数的高层的其他的perl一个外壳脚本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top