Sim, mas não é muito bonito.
Você pode fazer exec 2> error.log para enviar stderr para um arquivo
O problema é que agora você precisa limpá-lo e restaurar stderr , portanto, na parte inferior da função, você precisa fazer exec 2>&1 , o que faz com que stderr volte ao terminal novamente.
function XX()
{
exec 2> error.log
foo bar
exec 2>&1
}
O exec 2>&1 não faz mal deixar, então você pode apenas comentar e descomentar o primeiro exec .
Como alternativa, você pode fazer com que toda a função seja executada em um subshell para que os redirecionamentos sejam limpos automaticamente (os parênteses no exemplo abaixo iniciam um subshell).
function XX()
{ (
exec 2> error.log
foo bar
) }
Por fim, você pode criar uma definição de alias que possa comentar e descomentar facilmente e apenas colocá-la logo antes da declaração da função.
alias XX='XX 2> error.log'
function XX()
{
foo bar
}