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

In the install path of Git for Windows, what's the difference between ./git-bash.exe and bin/bash.exe and bin/sh.exe?

在 git for windows 的安装路径中,我找到了这 3 个 exes:

./git-bash.exe,

./bin/bash.exe,

./bin/sh.exe,

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

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

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

git-bash 是 "Git for windows" 的一部分,提供类似于 *nix bash.

的命令行环境

Windows 10 包括 "Windows subsystem",它可以在 Windows 中提供 Linux 环境(其中包括 shbash,一个简短的可以在 Difference between sh and bash)

找到比较

您可以将它们中的任何一个用于 git。与您的同事一起使用可能是一个优势(如果您需要 shell 或脚本方面的任何帮助)。

谍影重重 Shell 或 bashsh 的超集,即您在 sh 中可以做的任何事情也可以在 [=10] 中完成=]. Bashmore features 让编写脚本变得更容易。

另一方面,Git bashmsys shell 包含在 Git for Windows 中,因为 Windows 本身不支持 bash 功能(除非您添加 Windows Sub-sytem for Linux)。

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

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

“终端应用程序”是 GUI 模拟旧时代的物理终端,它们提供 UI 选项卡、字体、颜色等功能。终端应用程序的示例包括 Git BashConEmuVSCode中的终端、新的Window Terminal等。你可以在其中打开任何shell。

回到最初的问题:sh.exebash.exe是shell。 Bash 是 sh 的超集,具有更多的特性。如果您有自己喜欢的终端应用程序,您可能会使用 bash。 git-bash.exe 是一个终端应用程序(一个非常基本的应用程序,它的名字是“mintty”),它会自动打开 bash shell。如果您有自己喜欢的终端应用程序(如 ConEmu 或新的 Windows Terminal),则无需使用 git-bash.exe.