Parece uma péssima ideia, e eu duvido que o sistema forneça uma maneira de fazer isso.
Sempre que um processo é criado, o processo de chamada determina onde seu stdin, stdout e stderr serão direcionados. Teria que haver uma maneira geral de substituir isso - e isso quebraria qualquer mecanismo que redirecionasse o stderr explicitamente.
Por exemplo, se você digitar:
some_command >some_command.out 2>some_command.err
o stderr de some_command
deve ir para some_command.err
ou para /dev/tty12
?
A coisa mais próxima que consigo pensar é invocar um shell com seu stderr redirecionado:
bash -l 2>/dev/tty12
Em minhas (breves) experiências (redirecionando para um arquivo em vez de para um tty), isso faz com que o shell não seja interativo. Adicionar -i
força-o a ser interativo - mas o prompt do shell aparentemente é impresso em stderr.
É claro que você pode redirecionar o stderr para comandos individuais (supondo que você não esteja usando csh
ou tcsh
):
some_command 2>some_command.err
e você pode definir uma função de shell que faz isso para você:
e() { "$@" 2>/dev/tty12 ; }
Em seguida, para cada comando cujo stderr você deseja redirecionar, basta prefixar e
no comando:
e some_command