在Windows上,Git Bash与Windows Power Shell与命令提示符之间的区别是什么?

mqkwyuun  于 2023-10-22  发布在  Windows
关注(0)|答案(3)|浏览(218)

我是一个Mac的家伙谁是使用Mac的终端。我现在使用Windows。

  • 这些CLI选项之间有什么区别?
  • 我什么时候应该使用一个超过另一个?
  • 是否有更多我应该考虑的CLI选项?
  • 如果你是一个尝试适应Windows的Mac用户,你会使用什么CLI?

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

ih99xse1

ih99xse11#

Git bash是bash,这是IIRC也是MacOS上的默认shell。它不是Windows上的默认shell,尽管存在几种实现(CygWin,MinGW,...)。
除了bash之外,Git还捆绑了许多POSIX(UNIX/Linux/etc.)实用程序;为了避免与类似命名的Windows命令“冲突”,最常见的安装选项是以这样的方式安装bash,即其他POSIX命令仅在运行bash时可用。Git安装程序将创建一个快捷方式来启动这个“私有”版本的bash,因此是“git bash”。
Windows命令提示符运行默认的Windows shell CMD. EXE,它是旧的MS-DOS命令shell COMMAND. COM的衍生物。它比大多数POSIX shell功能要弱得多;例如,直到最近它才支持if/then/else结构,并且它不支持shell函数或别名(尽管有一些解决这些限制的方法)。
PowerShell更像是一个脚本环境。我将它与UNIX/Linux系统上的Perl进行比较--比标准shell强大得多,但不一定是我想在命令行中使用的东西。
需要注意的一件事是,一些更好的PowerShell功能可能需要您更新PowerShell版本-与Windows捆绑的版本通常是几年前的版本。更新PowerShell通常需要管理员权限;根据版本的不同,您可能还需要更新.NET Framework。
如果我是一个试图适应Windows的Mac用户...看情况在短期内,使用像bash这样熟悉的东西会更容易。但从长远来看,你--更重要的是,你的潜在用户--可能不想依赖第三方工具,特别是对于Windows用户来说,这通常会带来额外的学习曲线。
当你想用它的时候...这实际上取决于您试图实现的目标--无论是技术功能还是您希望呈现给用户的界面。如上所述,我认为PowerShell比CLI更适合脚本,除非您只需要运行一个JavaScript(内置或您自己创建的)。

3qpi33ja

3qpi33ja2#

这是shell之间的一些差异的高级概述,而不是逐个功能的比较。
CMD(命令提示符)和PowerShell都是Windows的shell。CMD.exe是从COMMAND.COM派生而来的,而COMMAND.COM本身又是从MS-DOS派生而来的,它有一些逻辑结构,可以运行程序,处理输出,以及执行您期望从shell中执行的大多数基本任务。它通常被认为是非常有限的,基于其他shell可以做什么,但不是不能,如果你知道如何使用它。然而,它从来没有真正的“设计”,新功能在没有明确路线图的情况下被添加。
Powershell是一个从头开始设计的shell,它与.NET有联系,并且内置了更多的现代语言结构。微软设计了Powershell作为CMD.exe和批处理脚本的替代品,尽管CMD远未被弃用。Powershell可以直接调用.NET类,在本机使用XML对象,并具有内置的远程处理功能。与批处理脚本相比,它更类似于编程或脚本语言。目前围绕Powershell的社区比批处理脚本强大得多,通常建议使用Powershell编写新代码,而不是继续使用批处理(CMD)脚本。
Powershell一开始确实感觉像CMD。您可以在其中运行程序并处理其输出,在大多数情况下,无论是从Powershell还是从CMD运行程序,其行为都完全相同。但是,您很快就会注意到一些差异-并非所有变量都被视为环境变量,变量都以$为前缀,而不是 Package 在%中,并且Powershell管道比CMD管道强大得多。Powershell也是完全面向对象的,这与大多数其他主要基于文本的shell语言相比是独一无二的。
You can read more here关于为什么Powershell比批处理脚本更值得推荐,关于CMD.exe和批处理文件也有很多历史。
Git Bash与您在Linux和MacOS上使用的bash shell相同,但针对Windows编译。它的前缀是Git,其名称表明它是与Git for Windows一起安装的,git和各种 *nix实用程序的打包,为Windows编译,用于git。您可以在其中运行shbash脚本,以及调用随其安装的Unix程序。
Unix实用程序通常也可以在CMDPowerShell中运行,但默认情况下,安装程序不会将这些实用程序添加到SYSTEM或USER PATH中,以免潜在地覆盖用户可能在其他上下文中使用的相同实用程序。基本上,它将Git Bash安装的实用程序隔离到Git Bash
除了git自动化之外,我不建议将Git Bash本身用于任何与生产相关的事情,在这种情况下,您可能更愿意自己管理cygwinmsys2或其他Unix兼容层的安装。但是在开发过程中,它可以是一个方便的shell,尽管这些天我通常更喜欢PowerShell而不是bash来编写Windows脚本。

rryofs0p

rryofs0p3#

我是一个长期的Windows用户。Windows API和Windows命令 shell 和VB脚本对我来说很自然。您希望为Docker项目的使用提供原生Windows体验。
使用WSL。
Docker项目的Windows用户使用WSL。(Windows系统Linux)。总有例外,但大多数Windows Docker用户首先是Docker用户,他们希望Docker能够轻松工作,并使用Windows子系统。

相关问题