繁体   English   中英

npm二进制+ Windows git bash +环境变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM