winpty injection
Thomas Wolff
towo@towo.net
Thu Apr 5 22:07:00 GMT 2018
Am 05.04.2018 um 21:41 schrieb Johannes Schindelin:
> Hi Thomas,
>
> On Thu, 5 Apr 2018, Thomas Wolff wrote:
>
>> Am 05.04.2018 um 15:25 schrieb Johannes Schindelin:
>>> On Thu, 5 Apr 2018, Corinna Vinschen wrote:
>>>
>>>> On Apr 4 19:07, Thomas Wolff wrote:
>>>>
>>>>> * As some people may object such a magic (and it might in fact raise
>>>>> unexpected problems), it could also be made dependent on a setting in
>>>>> the
>>>>> CYGWIN environment variable.
>>>> Nah. If it improves the situation, nobody will complain. However, it
>>>> may slow down calling native Windows apps considerably when used a lot
>>>> from scripts.
>>> We suggest `winpty` quite a bit in Git for Windows' bug tracker. And it is
>>> not without problems... for example, when calling Maven in MinTTY via
>>> `winpty mvn`, the `TERM` variable is still set as appropriate for MinTTY,
>>> and consequently, the color codes of Maven's output show up as ugly
>>> special characters...
>> This sounds weird, as ANSI colour controls do not differ among
>> terminals. What if you set TERM=cygwin or unset TERM before `winpty
>> mvn`? What's even weirder is that I cannot even reproduce the test
>> case, as `winpty mvn` tells me "Could not start 'mvn.exe': The system
>> could not find the file. (error 0x2)", although `mvn` works.
> In Git for Windows, we set `TERM=xterm`, not `TERM=cygwin` before
> launching MinTTY. That might explain the difference?
>
> Also, the reporter claimed the same about `winpty mvn`, as winpty does not
> use the shell to execute shell scripts on the `PATH`, and the solution was
> to run `winpty sh $(which mvn)`.
OK, winpty cannot start mvn because that's a shell script, not an exe.
winpty can start mvn.cmd directly, and in this case (after
back-converting JAVA_HOME to Windows syntax) I can reproduce the issue.
However, I do not see where the text output comes from; it's not from
the mvn wrapper and anything else is Java libraries. So the question is,
what does the Java runtime do with an escape character output by the
Java code? Especially as winpty seems to unset TERM (test case: winpty
cmd, then echo %TERM%). winpty itself lets escape characters pass
through, at least (test case: winpty echoesc.cmd, which contains echo
"...." with a colouring escape sequence with verbatim escape characters).
These symptoms suggest to me: winpty is not the culprit, but its
presence in the invocation chain seems to trigger the effect in a yet
unclear way.
Thomas
> See
> https://github.com/git-for-windows/git/issues/1470#issuecomment-365618938
> for details.
>
> Ciao,
> Johannes
More information about the Cygwin-developers
mailing list