Was bedeutet ein "Ausgang ist kein tty" -Fehler?

32

Ich habe versucht, die Ausgabe des Befehls mit php -iin die a-Datei zu schreiben , php -i > infound habe die folgende Fehlermeldung erhalten:

output is not a tty

Was heißt das?

Ich verwende git bashunter Windows.

Maxim Koretskyi
quelle
Hmm .. Gibt es in dem Verzeichnis, in dem Sie den Befehl ausführen, bereits eine Datei oder ein Verzeichnis mit dem Namen "info"?
nein, aber nach dem Ausführen des Befehls wird er erstellt, nur leer und der Fehler wird ausgegeben
Maxim Koretskyi
Bitte versuchen Sie es mit "strace php -i> info" und geben Sie die Ausgabe hier ein.
Welche Version von PHP verwenden Sie? Hat der Befehl die Info-Datei korrekt erstellt?
Michas
1
Ich habe momentan nicht die Zeit, eine Antwort darauf zu verfassen, aber wenn ein Antwortender etwas wie code.google.com/p/mintty/issues/detail?id=56 , homepage.ntlworld.com nehmen möchte ./jonathan.deboynepollard/FGA/… , github.com/git-for-windows/git/issues/399 , github.com/rprichard/winpty und github.com/docker/toolbox/issues/231 in der Hand halten und ausführen mit ihnen fühlen Sie sich bitte frei.
JdeBP

Antworten:

19

Was für mich funktioniert hat, basiert auf Pehs Kommentaren zu stackoverflow.com/questions/33622087

Wenn Sie C: \ Programme \ Git \ bin \ bash.exe anstelle von C: \ Programme \ Git \ git-bash.exe verwenden, funktioniert der Befehl einwandfrei

Zielsetzung
quelle
3
Das hat bei mir nicht funktioniert. Ich bekomme den gleichen Fehler.
Ryan
1
Aber heute hat es bei mir geklappt! Ich weiß nicht, warum es vor ein paar Monaten nicht funktioniert hat. +1
Ryan
1
Geben Sie
18

Ich habe ein ähnliches Thema gefunden. Eine Lösung, die für mich funktioniert hat:

Schreiben

php.exe -i > info

anstatt

php -i > info

Hängen Sie also die .exeErweiterung an Ihre Befehle an und es funktioniert.

Diese Lösung wurde hier gefunden: /programming//a/44727575/2377961

Radon8472
quelle
12

Wenn Sie Winpty unter der Haube verwenden, müssen Sie das -Xallow-non-ttyArgument übergeben, um dies zu beheben:

$ winpty python -c 'print("hello")' | grep h
stdout is not a tty

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello
Chiel ten Brinke
quelle
1
Löste das Problem für mich bei der Verwendung nodedurch conemu.
jakub.g
Vielen Dank ... Das hat bei mir funktioniert.
HassanSh__3571619
2

Ich glaube, in diesem Problem geht es mehr darum, wie Git Bash mit Piping umgeht, und weniger um PHP, da ich unter Windows mit Python auf dasselbe Symptom gestoßen bin. Die aktuell am häufigsten gewählte Antwort funktioniert bei mir nicht. Es könnte einige Monate später funktionieren, basierend auf diesem Kommentar und einem Folgekommentar . Aber ich bin ungeduldig, also entscheide ich mich für die native Windows-Eingabeaufforderung und voila, es funktioniert!

FUNKTIONIERT NICHT in Git Bash

rayluo@DESKTOP-10B0N4G MINGW64 ~
$ python -c "print('hello world')" > test.txt
stdout is not a tty

ARBEITET in der Eingabeaufforderung

(env27) C:\Users\rayluo>python -c "print('hello world')" > test.txt
(env27) C:\Users\rayluo>type test.txt
hello world
RayLuo
quelle
1

Sie leiten Ihre Ausgabe von Ihrem Terminal (tty) in eine Datei um. Daher ist Ihre Ausgabe nicht länger eine Kleinigkeit.

Die Nachricht macht vollkommen Sinn. Dies sollte jedoch kein Fehler sein.

Ich kann dieses Verhalten auf einem Linux-System nicht reproduzieren.

michas
quelle
Entschuldigung, ich habe den falschen Ort kommentiert. Bitte führen Sie "strace php -i" aus und fügen Sie die Ausgabe ein (die letzten Zeilen zuerst).