O Bash exibe o prompt apenas no modo interativo. Ou seja normalmente é enviado para o terminal (/ dev / tty no linux). Isso não é / dev / stdout ou / dev / stdin:)
Agora, não tenho certeza, mas posso imaginar que o bash permitirá o modo interativo limitado quando não houver um tty totalmente funcional. Nesse caso, esperaria que o prompt fosse gravado no stdout. Eu não testei isso.
Boa prova de conceito:
(for a in some set of words; do echo $a > /dev/tty; done) 2>&1 > /dev/null
apenas mostrará 1..10 como se não houvesse redirecionamento. Como o prompt, a saída é enviada diretamente para o terminal (que falhará se não houver um)
DICA: se você quisesse que tudo fosse coletado, olhe para
- script (1) com scriptreplay ( Capture os logs de execução no cliente SSH? ou Reprodução de gravação de shell de scripts - isso parece ser um pouco de um FAQ)
- a variável PROMPT_COMMAND que deve permitir que você imprima o material em stdout como efeito secundário de exibição o prompt
-
set -o xtrace
(a.k.a.set -x
,bash -x
etc) para registro geral de instruções