在 git for windows 的安装路径中,我发现了这 3 个 exe:
./git-bash.exe,
./bin/bash.exe,
./bin/sh.exe,
启动它们中的任何一个都会给我一个可用的终端。
第一个是安装创建的开始菜单中的默认快捷方式,第二个在VSCode doc中用于在VSCode中设置集成终端,第三个在ConEmu doc中提到。
它们之间有什么区别,我应该使用哪个?
要回答这个问题,您需要首先了解“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.