小编rob*_*muh的帖子

为什么perl vc.8.8(git-bash)中的perl exec()在v5.18.2(草莓)中的工作方式不同?

最近将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:

  • 下载并安装http://git-scm.org
  • 启动git-bash shell
  • 创建一个shell脚本并将上面的代码放入其中
  • 使用chmod 755设置执行权限
  • 确保您使用/ bin/perl …

git perl exec strawberry-perl

-1
推荐指数
1
解决办法
443
查看次数

标签 统计

exec ×1

git ×1

perl ×1

strawberry-perl ×1