[英]npm binary + windows git bash + environment variables
在节点模块中,我创建了一个使用npm i -g
全局安装的工具。 该工具是一个bash脚本,用于设置我的本地配置,调用其他一些脚本,并且还需要设置一些环境变量。 在Linux上,它可以正常调用
$ . my-setup
要么
$ source my-setup
这将调用my-setup
,并且由于使用“ dot”或source进行调用,因此脚本设置的环境变量将导出到调用shell。 没问题。
但是,当在Windows 7中的Git bash上运行相同的脚本时,将调用该脚本,但随后关闭整个外壳。 当研究NPM如何处理Windows中全局安装的二进制文件时,我注意到
$ type my-setup
my-setup is /c/Users/jhh/AppData/Roaming/npm/my-setup
反过来扩展到
"$basedir/node_modules/<my-module>/my-setup.sh" "$@"
exit $?
因此,我怀疑这里的最终退出语句是导致在Windows上采购此脚本时关闭调用外壳的原因。 如果我手动做
$ . "$basedir/node_modules/<my-module>/my-setup.sh"
然后,在不关闭外壳程序的情况下,脚本可以很好地执行并正确导出变量。
这里发生了什么? NPM的包装程序调用脚本并调用exit $?
? 为什么只有在使用source
调用时才引起问题? 以及我该怎样真正创建一个与npm一起安装的,可以与source
或.
在Windows(Git Bash)和Linux上,是否将环境变量导出到调用shell而不关闭它?
问题似乎是git bash 不能作为常规控制台使用 。
可以按照链接中的建议进行修复,也可以使用功能齐全的bash终端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.