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