经过一番尝试后,我注意到当仅在 bash.exe 中运行命令时,有些东西在 bash 中不起作用。
问题与 virtualenvwrapper 有关。没有正确激活环境。
ERROR: Environment '/e/virtualenvs/test' does not contain an activate script.
并且在执行workon
时也不会列出环境。它只显示一个空列表。
但是如果通过“Git Bash.vbs”在 bash 中启动它,所有命令都可以正常工作,并且环境会激活等。
我试过查看 vbs 文件,但我不太习惯 vbs 代码,也不确定发生了什么。
所以我想知道 .vbs 做了什么来使 bash 中的东西“工作”,否则这些东西将无法工作。希望它不是特定于 virtulenvwrapper 的问题,而是 .vbs 文件所做的使事情更兼容的一般事情?
编辑:更新
好的,在进行更多测试后,我确切地找到了触发因素,但我现在仍然不明白为什么它会起作用。
如果我从 gits 目录启动 sh.exe,我会得到原来的错误行为。但是运行 sh.exe --login 和 virtualenvwrapper 是可行的。
所以现在应该是 - --login 做了什么让事情“工作”
最佳答案
传递给 bash
的 --login
命令行选项使其表现为“登录 shell”——当用户登录时为用户启动的那个(提供他们的用户名和匹配的密码在系统提示时使用那个古老的经典“登录:”提示)。
虽然上面的描述说明了一个显而易见的事情,但与“正常”调用 shell 的行为的真正区别在于它读取的启动文件。引用this section (请参阅那里对 --login
和 -l
命令行选项的讨论),然后是适当的位形式 here .
然后在你的Git安装目录下的etc
目录下找到它读取的所有文件。也就是说,您要查找的是 etc\profile
。
据推测,该文件在 shell 中设置了某些影响其行为的东西。
关于Git 的 "Bash.exe"与 "Git Bash.vbs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26202763/