Git 的 "Bash.exe"与 "Git Bash.vbs"

标签 git bash sh msysgit

经过一番尝试后,我注意到当仅在 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/

相关文章:

java - Git分支管理: Local vs.远程

git - 配置 git 提交编辑器颜色

bash - 如何打印管道分隔文件中的字段?

linux - 如何使用特殊字符在中间显示 "grep"文本

linux - 根据文件输入执行不同功能的 Shell 脚本

javascript - 想要 javascript 中 $bhai 的值

xcode - Git 不跟踪文件夹中的文件 - 来自 .xcassets 的 contents.json

Git pull 错误 : unable to create temporary sha1 filename

Bash 脚本通过 SSH 进入机器而不提示密码且不使用 key

linux - 如何将时间戳添加到 STDERR 并重定向到文件