Com base nessa resposta do ServerFault Envie a saída bash -x para o logfile sem interromper a saída padrão , as versões modernas do bash incluem um BASH_XTRACEFD
especificamente para especificar um descritor de arquivo alternativo para a saída de set -x
Então, por exemplo, você pode fazer
#!/bin/bash
exec 19>logfile
BASH_XTRACEFD=19
set -x
command1
command2
...
para enviar a saída de set -x
para o arquivo logfile
, preservando a saída padrão regular e os fluxos de erro padrão para os seguintes comandos.
Observe que o uso de fd 19 é arbitrário - ele só precisa ser um descritor disponível (ou seja, não 0, 1, 2 ou outro número que você já alocou).