在Git for Windows的安装路径中,./git-bash.exe和bin/bash.exe和bin/sh.exe有什么区别?

ZYi*_*nMD 10 git git-bash

在 git for windows 的安装路径中,我发现了这 3 个 exe:

./git-bash.exe,

./bin/bash.exe,

./bin/sh.exe,

启动它们中的任何一个都会给我一个可用的终端。

第一个是安装创建的开始菜单中的默认快捷方式,第二个在VSCode doc中用于在VSCode中设置集成终端,第三个在ConEmu doc中提到。

它们之间有什么区别,我应该使用哪个?

ZYi*_*nMD 5

要回答这个问题,您需要首先了解“shell”与“终端应用程序”。

“shell”是命令的解释器。当您在 cmd 和 bash 中键入相同的命令时,您会得到不同的结果,因为它们是不同的解释器。shell 的示例包括cmd、powershell、sh、bash、zsh等(bash和zsh都是 的更强大版本sh)。在 Windows 上,这些 shell 以 .exe 文件形式存在。双击它们将启动 CLI 窗口。该窗口是 Windows 提供的最低限度的“终端应用程序”,该窗口没有正式名称。

“终端应用程序”是一个模拟旧时代物理终端的 GUI,它们提供 UI 功能,如选项卡、字体、颜色等。终端应用程序的示例包括 、 、Git Bash中ConEmu的终端VSCode、新的Window Terminal等。您可以打开任何它们里面有壳。

回到最初的问题:sh.exe和bash.exe都是贝壳。Bash 是 sh 的超集,具有更多功能。如果您有自己喜欢的终端应用程序,您可能会使用 bash。git-bash.exe是一个终端应用程序(一个非常基本的应用程序,它的名称是“mintty”),它将自动打开 bash shell。如果您有自己喜欢的终端应用程序(例如ConEmu或新的Windows Terminal),那么您不需要使用git-bash.exe.