![Что означает ошибка «выход не является tty»?](https://rvso.com/image/1476433/%D0%A7%D1%82%D0%BE%20%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%B0%D0%B5%D1%82%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%20%C2%AB%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%20%D0%BD%D0%B5%20%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20tty%C2%BB%3F.png)
Я попытался записать вывод команды php -i
в файл с помощью php -i > info
и получил следующую ошибку:
output is not a tty
Что это значит?
Я использую git bash
Windows.
решение1
Я нашел похожую тему, как эта. Одно решение, которое сработало для меня:
Писать
php.exe -i > info
вместо
php -i > info
Так что просто добавьте .exe
расширение к своим командам, и все заработает.
Нашел это решение здесь:https://stackoverflow.com/a/44727575/2377961
решение2
Если вы используете winpty под капотом, вам придется передать аргумент, -Xallow-non-tty
чтобы исправить это:
$ winpty python -c 'print("hello")' | grep h
stdout is not a tty
$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello
Однако если вывод искажен, -Xplain
аргумент также потребуется:
$ winpty -Xallow-non-tty python -c 'print("hello")' | xxd
00000000: 1b5b 306d 1b5b 304b 6865 6c6c 6f1b 5b30 .[0m.[0Khello.[0
00000010: 4b1b 5b3f 3235 6c0d 0a1b 5b30 4b1b 5b3f K.[?25l...[0K.[?
00000020: 3235 68 25h
$ winpty -Xallow-non-tty -Xplain python -c 'print("hello")' | xxd
00000000: 6865 6c6c 6f0d 0a hello..
решение3
Что сработало для меня, основываясь на комментариях Пе на stackoverflow.com/questions/33622087
Если вы используете C:\Program Files\Git\bin\bash.exe вместо C:\Program Files\Git\git-bash.exe, то команда работает нормально.
решение4
Вы перенаправляете вывод из терминала (tty) в файл. Поэтому ваш вывод больше не является tty.
Сообщение имеет смысл. Однако это не должно быть ошибкой.
Я не могу воспроизвести это поведение в системе Linux.