Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Winpty and Git Bash

I had the same issue as Python not working in the command line of git bash, where in Git Bash, when I type Python, it just hangs.

However, typing winpty python works perfectly.

What exactly is winpty? Why is the above command useful?

like image 992
Nico Avatar asked Jan 11 '18 04:01

Nico


People also ask

What does Winpty mean?

GitHub - rprichard/winpty: A Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs. Product. Actions.

Is Git bash and terminal same?

Git Bash is an application for Microsoft Windows environments which provides an emulation layer for a Git command line experience. Bash is an acronym for Bourne Again Shell. A shell is a terminal application used to interface with an operating system through written commands.

Can I use Git bash instead of CMD in Windows?

You don't need to use Git Bash. It is just conventional, because Git was developed and designed on Linux and most Git users use Linux and using Git Bash on Windows makes it a uniform experience. You can certainly use Git on cmd; just make sure you add C:\Program Files\git\cmd to your PATH .

Can I use Gitbash as a Linux?

Although Git is a collection of command-line utility programs, you can use it on Windows via a GUI-based app. Bash is only available on Unix-like operating systems, like macOS and Linux. Git Bash is strictly for Microsoft Windows users.


1 Answers

winpty is A Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs.

That is why you need it as described here:

The software works by starting the winpty-agent.exe process with a new, hidden console window, which bridges between the console API and terminal input/output escape codes. It polls the hidden console's screen buffer for changes and generates a corresponding stream of output.

rprichard/winpty mentions:

The package consists of a library (libwinpty) and a tool for Cygwin and MSYS for running Windows console programs in a Cygwin/MSYS pty.

As detailed in "mintty/mintty Tips":

When interacting with programs that use a native Windows API for command-line user interaction (“console mode”), a number of undesirable effects are observed; this is the pty incompatibility problem and the character encoding incompatibility problem.
This basically affects all programs not compiled in a cygwin or msys environment (and note that MinGW is not msys in this context).

As a workaround, you can use winpty as a wrapper to invoke the Windows program.


So:

Why do many tools work in plain CygWin but some of them also need winpty?

This was asked (specifically for Python) in msys2/MINGW-packages issue 2645

there's a non-zero cost associated with using winpty, and most of the time, mintty works fine anyway.
Your problem stems from trying to use mingw python which is a native windows build, and hence expects it to be used from a windows console.
mintty uses pipes for input/output, so it doesn't look like a proper terminal to most programs.

On the other hand, if you use msys2 (or cygwin) python (.e.g /usr/local/bin/python2), everything just works.

(With msys2/MINGW-packages PR 2675, python3 detects the terminal correctly)

like image 79
VonC Avatar answered Sep 23 '22 06:09

VonC