最近将Strawberry Perl放在Windows 8.1机器上exec
,并发现在git-bash中使用v5.8.8的行为与/bin/perl使用Strawberry的机器不同/c/strawberry/perl/bin/perl.这是我发现的非常简单的脚本(纯粹是在玩的时候偶然$PATH):
#!/usr/bin/env perl
my $comment = "@ARGV" || 'update';
exec "git status; git add -A . ; git status; git commit -m '$comment'; git push";
Run Code Online (Sandbox Code Playgroud)
这与git-bash(/bin/perl)工作正常,但在/c/strawberry/perl/bin/perl发现$PATH以下错误发生时:
git: 'status;' is not a git command. See 'git --help'.
Did you mean this?
status
Run Code Online (Sandbox Code Playgroud)
两种情况下的代码都相同.我的预感是草莓中的perl 5.18改变了exec命令本身的行为,因为它在上下文中解释了它的参数(就像perl喜欢这样做).
我主要担心的是,perl的两个版本在某种程度上使这个相当简单的代码在perl版本之间不兼容,而不是其他一些简单的系统配置问题,甚至可能是草莓发行版本身而不是perl的问题.
如果这是一个perl兼容性问题,我倾向于坚持使用v5.8.8,它完成了我想要Perl为我做的所有事情(在转到另一种语言之前).
execperl语句是否在这些版本之间发生了变化?我在互联网上找不到任何证据.
要重新创建此行为:
在Windows机器上安装git-scm.org: