exec para descritores de arquivos e set -x são portáveis; xtrace não é, mas na verdade deve ser a mesma coisa que -x .
Para salvar e restaurar descritores de arquivos, você realmente usa exec novamente. Você precisa escolher alguns descritores não utilizados, o que geralmente significa qualquer coisa acima de 2, e redirecionar os originais para aqueles, então redirecionar de volta no final.
exec 20<&0 21>&1 22>&2
# do your redirections
# do whatever you wanted to have redirected
exec <&20 >&21 2>&22 20<&- 21>&- 22>&-
A última linha primeiro dup() s os descritores de arquivos salvos de onde eles vieram, então fecha ( &- ) as cópias. Os fechamentos provavelmente são desnecessários, mas é uma boa ideia.
Observe também que, se isso está sendo executado em seu próprio shell, os redirecionamentos desaparecem quando o shell é executado. Você só precisaria desfazer o redirecionamento se estivesse usando . (portátil) ou source ( bash ).