On Windows what is the difference between Git Bash vs Windows Power Shell vs Command prompt On Windows what is the difference between Git Bash vs Windows Power Shell vs Command prompt powershell powershell

On Windows what is the difference between Git Bash vs Windows Power Shell vs Command prompt


Git bash is bash, which is IIRC also the default shell on MacOS. It is not the default shell on Windows, although several implementations exist (CygWin, MinGW, ...).
Git is bundled with a number of *NIX utilities; in order to avoid "collisions" with similarly named Windows commands, the most common installation option is to install bash in such a way that the other *NIX-like commands are only available when running bash. The Git installer will create a shortcut to launch this "private" version of bash, hence "git bash".

The command prompt runs the default Windows shell, CMD.EXE, which is a derivative of the old MS-DOS command shell, COMMAND.COM. It is much less capable than most *NIX shells; for example, it did not until relatively recently support an if/then/else construct, and it does not support shell functions or aliases (although there are some workarounds for these limitations).

PowerShell is more of a scripting environment. I'd compare it to Perl on UNIX/Linux systems -- much more powerful than the standard shell, but not necessarily something I'd want to use at the command line.
One thing to be aware of is that some PowerShell features require a newer version of PowerShell than what is installed by default on a particular version of Windows, and updating PowerShell usually requires admin privilege. Depending on the version, you may also need to update the .NET framework.


If I were a Mac person trying to adapt to Windows ... it depends. In the short term it would be easier to use something familiar like bash. But long term, you -- and more importantly, your potential users -- may not want to be dependent on a third party tool, especially since for Windows users that will typically present an additional learning curve.

As to which to use when ... it really depends on what you're trying to accomplish -- both in terms of technical functionality and the interface you want to present to your users. As noted above, I'd consider PowerShell more appropriate for scripting than the CLI, unless you just need to run a cmdlet (either a built-in or one you've created yourself).