在 Windows 上,Git Bash vs Windows Powershell vs 命令提示符有啥区别

Posted

技术标签:

【中文标题】在 Windows 上,Git Bash vs Windows Powershell vs 命令提示符有啥区别【英文标题】:On Windows what is the difference between Git Bash vs Windows Power Shell vs Command prompt在 Windows 上,Git Bash vs Windows Powershell vs 命令提示符有什么区别 【发布时间】:2019-10-15 03:50:29 【问题描述】:

我是一个习惯于 Mac 终端的 Mac 用户。现在我使用的是 Windows。

这些 CLI 选项之间有什么区别? 什么时候应该使用其中一种? 我是否应该考虑更多 CLI 选项? 如果您是 Mac 用户并试图适应 Windows,您会使用什么 CLI?

我尝试使用 Windows 的原因是,我想确保我的 Docker 项目的 CLI 为 Windows 用户工作,我可以将来自我的容器的文件写入 Windows,并确保我的 README 文件有针对 Windows 用户的说明.并且基本上也测试了我在 Windows 上所做的一切,比如 Python。

【问题讨论】:

作为 Mac 终端的忠实拥护者,我建议您不太可能享受其中的任何选项。恕我直言,Git Bash 不是一个非常完整的实现,我怀疑没有多少 Windows 安装有它,它只支持 Windows Vista - 即不支持 Windows XP。 PowerShell 是一个笨拙的、过于冗长的可憎之物,任何理智的人都不想被打扰学习——我认为你可以运行到 Windows 7 之前。命令提示符在几乎所有 Windows 版本上都可用,但语法和特性很糟糕。我没有把它作为答案,因为这只是我的意见。 YMMV。 【参考方案1】:

Git bash 是 bash,它是 IIRC,也是 MacOS 上的默认 shell。它不是 Windows 上的默认 shell,尽管存在几个实现(CygWin、MinGW、...)。 除了bash,Git 还捆绑了许多 POSIX(UNIX/Linux/等)实用程序;为了避免与类似名称的 Windows 命令“冲突”,最常见的安装选项是安装bash,使其他 POSIX 命令仅在运行bash 时可用。 Git 安装程序将创建一个快捷方式来启动这个“私人”版本的bash,因此是“git bash”。

Windows 命令提示符运行默认的 Windows 外壳程序 CMD.EXE,它是旧的 MS-DOS 命令外壳程序 COMMAND.COM 的衍生版本。它的能力远不如大多数 POSIX shell;例如,它直到最近才支持 if/then/else 构造,并且不支持 shell 函数或别名(尽管有一些解决这些限制的方法)。

PowerShell 更像是一个脚本环境。我会将它与 UNIX/Linux 系统上的 Perl 进行比较——比标准 shell 更强大,但不一定是我想在命令行中使用的东西。 需要注意的一件事是,某些更好的 PowerShell 功能可能需要您更新您的 PowerShell 版本——与 Windows 捆绑在一起的版本通常已有几年的历史。并且更新 PowerShell 通常需要管理员权限;根据版本,您可能还需要更新 .NET 框架。


如果我是一个试图适应 Windows 的 Mac 用户......这取决于。在短期内,使用像bash 这样熟悉的东西会更容易。但从长远来看,您(更重要的是,您的潜在用户)可能不希望依赖第三方工具,尤其是对于 Windows 用户而言,这通常会带来额外的学习曲线。

至于何时使用...这实际上取决于您要完成的工作——无论是在技术功能方面,还是在您想要呈现给用户的界面方面。如上所述,我认为 PowerShell 比 CLI 更适合编写脚本,除非您只需要运行一个 cmdlet(内置的或您自己创建的)。

【讨论】:

以上是关于在 Windows 上,Git Bash vs Windows Powershell vs 命令提示符有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Git Bash 构建在 VS Code 中无法从终端运行

git bash的VS Code启动位置

vscode配置git bash

1803更新后VS15不识别git克隆的文件

在 Windows 7 上使用 git-bash 更新文件权限

如何在没有 Git Bash 或 GUI 的情况下在 Windows 10 上安装 git?