Isso pode acontecer se o aplicativo estiver gravando diretamente no TTY em vez de STDOUT ou STDERR.
Você pode brincar com esse comportamento comparando os dois exemplos abaixo
( echo foo ) &>/dev/null
( echo foo > $(tty) ) &>/dev/null
Observe que o primeiro não mostra nada, mas o segundo não. Isso porque enviamos a saída diretamente para o tty e ignoramos o redirecionamento para /dev/null
.
Você pode contornar coisas assim usando script
script -c '( echo foo > $(tty) ) &>/dev/null' >/dev/null
Basicamente, o utilitário script
cria um tty falso e lança o comando nesse tty. Qualquer saída do comando é enviada para o STDOUT, que você pode redirecionar normalmente.