Você pode usar um soquete ( syslogd faz isso, por exemplo). Mas então, como você se protegeria contra comandos como
LD_PRELOAD=my_bogus_socket_funcs.so somecommand
Ou você pode usar dup2
para alterar o descritor de arquivo para um valor mais alto número. Mas isso não é garantia, talvez apenas proteção contra erros de script (como usar 3 em vez de 2 em redirecionamentos).
Se o script quiser alterar o comportamento de rastreamento propositalmente, acredito que não há muito que um shell possa (ou deveria) fazer.