O que significa um erro `saída não é um tty`?

O que significa um erro `saída não é um tty`?

Tentei gravar a saída do comando php -iem um arquivo usando php -i > infoe recebi o seguinte erro:

output is not a tty

O que isso significa?

Estou usando git bashno Windows.

Responder1

Encontrei um tópico semelhante como este. Uma solução que funcionou para mim:

Escrever

php.exe -i > info

em vez de

php -i > info

Então, basta anexar a .exeextensão aos seus comandos e ela funciona.

Encontrei esta solução aqui:https://stackoverflow.com/a/44727575/2377961

Responder2

Se acontecer de você estar usando o winpty nos bastidores, você terá que passar o -Xallow-non-ttyargumento para corrigir isso:

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

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello

No entanto, se a saída for mutilada, o -Xplainargumento também será necessário:

$ 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..

Responder3

O que funcionou para mim, com base nos comentários de Peh em stackoverflow.com/questions/33622087

Se você usar C:\Program Files\Git\bin\bash.exe em vez de C:\Program Files\Git\git-bash.exe então o comando funciona bem

Responder4

Você está redirecionando a saída do seu terminal (tty) para um arquivo. Portanto, sua saída não é mais um tty.

A mensagem faz todo o sentido. No entanto, isso não deve ser um erro.

Não consigo reproduzir esse comportamento em um sistema Linux.

informação relacionada