Redirecting stderr to stdout through pipe doesn't work the way it does in Linux

cyg Simple cygsimple@gmail.com
Wed Dec 5 17:42:00 GMT 2018


On 12/5/2018 10:11 AM, David Karr wrote:
> On Tue, Dec 4, 2018 at 12:52 PM Marco Atzeri <marco.atzeri@gmail.com> wrote:
> 
>> Am 04.12.2018 um 21:41 schrieb David Karr:
>>> "CYGWIN_NT-6.1 WACDTL03DK068X 2.9.0(0.318/5/3)"
>>>
>>> I installed a version of "kubectl" for windows, and I use it extensively
>> in
>>> Cygwin bash for scripting command-line automation. In general, this works
>>> perfectly fine. I even use the same scripting in a Linux VM.
>>>
>>> I'm seeing an issue with one script that works fine in the Linux VM, but
>>> not in Cygwin.
>>>
>>> The command line is approximately this:
>>>
>>>        kubectl exec pod -c container -i -t -- grep "string"
>> stuff.properties
>>> 2>&1 | sed -e 's/^propname=//'
>>>
>>> In Linux, this works perfectly fine.  In Cygwin, it says "stdout is not a
>>> tty".
>>>
>>> I haven't updated my local Cygwin installation for quite a while. I'd
>>> prefer not to, unless there is a strong chance this kind of thing would
>> be
>>> fixed.
>>>
>>
>> as kubectl is not a Cygwin program, it is not aware of cygwin pty.
>> You can try to use winpty to overcome the problem.
>>
>> https://github.com/rprichard/winpty
>>
>>
>>
> It turns out that not only had I already used winpty for similar
> functionality, it was actually in place in the pipeline when I tried to do
> this.  When I turned on debugging output, it showed that kubectl was
> already being wrapped by winpty when it reported "stdout is not a tty".
> However, this was one shell script wrapper deeper than I usually call it.
> Does it matter whether winpty is called from the shell script I'm calling,
> or from the script being called by the script I'm calling?

Your query got me interested in looking and I believe that winpty needs 
to be at the front of all the commands so that it can communicate with 
mintty properly.  To overcome the need to remember you could add an 
alias to execute the command; `alias FOO="winpty FOO"'.

-- 
cyg Simple

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list