【发布时间】:2018-12-28 04:03:16
【问题描述】:
我是一名开发人员,运行 Git for Windows v2.12.2(2) 并使用它附带的 GitBash 程序来满足我所有的 shell 需求。此 shell 中可用的 bash 版本似乎是 v4.4.12(1)。我在 Windows 10 上。
我有一个 Perl 脚本,我希望在我运行命令 git my-script 时让 Git 拾取并执行。我确保脚本在我的PATH 上,并且我能够运行git my-script 并看到我的脚本正在运行。但是,我的脚本需要位于我的文件系统上几个位置的自定义模块,并且在通过git my-script 运行时找不到这些模块。我知道我所有的 shell 变量都配置正确;如果我直接运行脚本(即perl /path/to/git-my-script),它可以正常工作。
对于这个问题,使用这个非常简单的脚本:
#!/usr/bin/env perl
# Print all directories searched for perl modules
print "$_\n" for @INC;
当通过perl /path/to/my-script 运行时,它会按预期输出所有目录。当通过git my-script 运行时,它会为我的PERL5LIB 变量中定义的目录(需要的目录)输出相同的目录except。
git my-script 调用的哪个 shell 不会继承我的 PERL5LIB 变量?这是特定于 Windows 的问题吗?是否需要调整其他配置文件,或者必须定义一些系统变量?
编辑:我怀疑git 调用/bin/sh,它一直抱怨__git_ps1 不是一个定义的函数。当我将其定义为__git_ps1 () { return; } 时,PERL5LIB 变量突然变为可用。
【问题讨论】: