这可能与 git-submodule: bad variable name 相同的问题,但提供了附加信息以便更轻松地解决问题
$ git submodule summary
/usr/lib/git-core/git-submodule: 88: export: made.: bad variable name
* modules/example2 0000000...1945c42 (1):
> Oops, uncomment
在
set -x
上添加/usr/lib/git-core/git-submodule
来调试错误时,错误发生前会输出以下内容:
... [cut]
+ eval_gettext usage: $dashless $USAGE
+ gettext usage: $dashless $USAGE
+ envsubst --variables usage: $dashless $USAGE
+ export PATH No variable replacements made.
/usr/lib/git-core/git-submodule: 88: export: made.: bad variable name
当我直接运行
envsubst
时,输出如下:
$ envsubst --variables 'usage: $dashless $USAGE'
No variable replacements made.
$ which envsubst
/home/tno/repos/example/node_modules/.bin/envsubst
$ envsubst
0.15.0
我的路径是
$ echo $PATH
/home/tno/repos/example/node_modules/.bin:/home/tno/repos/example/bin:/home/tno/.local/bin:[cut]:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:[cut]
问题是 git 正在尝试使用
envsubst
npm 包,而不是来自 gettext GNU 项目的
envsubst
。尝试从您的 PATH 中删除 /home/tno/repos/example/node_modules/.bin
,看看是否可以解决问题。
您可以确保 PATH 中
/usr/bin
位于 /home/tno/repos/example/node_modules/bin
之前。
您可以围绕
git
制作一个包装脚本,在调用真正的 git
之前调整 PATH。确保包装器的目录位于 PATH 中的 /usr/bin
之前。在您的示例中,放置此脚本的几个好地方是 ~/.local/bin/git
或 ~/repos/example/bin/git
。
#!/bin/sh
PATH=/usr/bin:$PATH git "$@"