Depois de executar exec &>filename
, a saída padrão e o erro padrão do shell vão para filename
. A entrada padrão é o descritor de arquivo 0 por definição, e a saída padrão é fd 1 e o erro padrão é fd 2.
Um descritor de arquivo não é redirecionado ou não redirecionado: ele sempre vai para algum lugar (supondo que o processo tenha este descritor aberto). Redirecionar um descritor de arquivo significa mudar para onde ele vai. Quando você executou exec &>filename
, stdout e stderr foram anteriormente conectados ao terminal e se conectaram a filename
.
Há sempre uma maneira de se referir ao terminal atual: /dev/tty
. Quando um processo abre este arquivo, significa sempre o terminal de controle do processo, o que for . Então, se você quiser recuperar stdout e stderr originais do shell, você pode fazer isso porque o arquivo ao qual eles estavam conectados ainda está por aí.
exec &>/dev/tty