hea*_*ind 13 windows shell powershell command-prompt git-bash
我是一个习惯了 Mac 终端的 Mac 人。现在我正在使用Windows。
我尝试使用 Windows 的原因是我想确保我的 Docker 项目的 CLI 适用于 Windows 用户,我可以将来自我的容器的文件写入 Windows,并确保我的 README 文件包含适用于 Windows 用户的说明。基本上也测试我在 Windows 上所做的一切,比如 Python。
Ben*_*est 14
这是对 shell 之间的一些差异的高级概述,而不是逐个功能的比较。
CMD(命令提示符) 和PowerShell都是 Windows 的 shell。CMD.exe诞生于COMMAND.COM,而后者本身又诞生于MS-DOS,并且具有一些逻辑结构,可以运行程序、处理输出以及执行您期望从 shell 获得的大多数基本任务。根据其他 shell 的功能,它通常被认为非常有限,但如果您知道如何使用它,它也不是没有能力。然而,它从来没有真正“设计”过,新功能在没有明确的路线图的情况下就被添加了。
Powershell是一个从头开始设计的 shell,与 .NET 相关,内置了更现代的语言结构。Microsoft 设计了 Powershell 作为CMD.exe批处理脚本的替代品,但CMD远未被弃用。Powershell可以直接调用 .NET 类、本机使用 WMI 对象,并具有内置的远程处理功能。与批处理脚本相比,它更类似于编程或脚本语言。如今,存在Powershell比批处理脚本更强大的社区,并且通常建议编写新代码而Powershell不是继续使用批处理 ( CMD) 脚本。
PowershellCMD一开始确实感觉像。Powershell您可以在其中运行程序并处理其输出,并且在大多数情况下,无论是从或从运行,程序的行为都完全相同CMD。但是,您很快就会注意到一些差异 - 并非所有变量都被视为环境变量,变量以 a 为前缀,而$不是包装在 中%,并且Powershell管道比管道强大得多CMD。Powershell它也是完全面向对象的,与大多数其他主要基于文本的 shell 语言相比,这是独一无二的。
您可以在此处阅读更多有关为什么Powershell建议使用批处理脚本的信息,并且还有大量关于CMD.exe批处理文件的历史记录。
Git Bashbash与您在 Linux 和 MacOS 上使用的 shell相同,但为 Windows 编译。它的Git名称前缀表明它是与Git for Windowsgit一起安装的,它是为 Windows 编译的各种 *nix 实用程序的打包,以便与 git 一起使用。您可以在其中运行sh脚本bash,以及调用它随其安装的 Unix 程序。
Unix 实用程序通常可以在CMD或PowerShell中运行,但默认情况下,安装程序不会将这些实用程序添加到 SYSTEM 或 USER 中PATH,以免潜在地覆盖用户可能在其他上下文中使用的相同实用程序。Git Bash基本上,它隔离了随to安装的实用程序Git Bash。
除了自动化之外git,我不建议将其用于任何与生产相关的事情,在这种情况下,您可能宁愿自己管理、或另一个 Unix 兼容层Git Bash的安装。但在开发过程中它可能是一个方便的 shell,尽管现在我通常更喜欢Windows脚本编写。cygwinmsys2PowerShellbash
Dav*_*vid 13
Git bash is bash,它是 IIRC 也是 MacOS 上的默认 shell。尽管存在多种实现(CygWin、MinGW 等),但它不是 Windows 上的默认 shell。
Git 捆绑了许多 *NIX 实用程序;为了避免与类似命名的 Windows 命令发生“冲突”,最常见的安装选项是以bash这样的方式安装,即其他 *NIX 类命令仅在运行bash. Git 安装程序将创建一个快捷方式来启动这个“私有”版本的bash“git bash”。
命令提示符运行默认的 Windows 外壳程序 CMD.EXE,它是旧的 MS-DOS 命令外壳程序 COMMAND.COM 的衍生物。它的功能远不如大多数 *NIX shell;例如,它直到最近才支持 if/then/else 结构,并且它不支持 shell 函数或别名(尽管有一些解决这些限制的方法)。
PowerShell 更像是一个脚本环境。我将它与 UNIX/Linux 系统上的 Perl 进行比较——比标准 shell 强大得多,但不一定是我想在命令行中使用的东西。
需要注意的一件事是,某些 PowerShell 功能需要比特定版本的 Windows 上默认安装的 PowerShell 版本更新的 PowerShell,并且更新 PowerShell 通常需要管理员权限。根据版本,您可能还需要更新 .NET 框架。
如果我是一个试图适应 Windows 的 Mac 人……那要看情况了。在短期内,使用类似bash. 但从长远来看,您——更重要的是,您的潜在用户——可能不想依赖第三方工具,特别是因为对于通常会呈现额外学习曲线的 Windows 用户。
至于何时使用哪个......这实际上取决于您要完成的任务——无论是技术功能还是您想要呈现给用户的界面。如上所述,我认为 PowerShell 比 CLI 更适合编写脚本,除非您只需要运行一个 cmdlet(内置的或您自己创建的)。
| 归档时间: |
|
| 查看次数: |
11809 次 |
| 最近记录: |