Se você usar /usr/bin/time , a única maneira de enviar o stderr do processo cronometrado e as informações de tempo para diferentes canais é informar ao utilitário time para fazê-lo. Você não pode fazê-lo com redirecionamentos no shell que chama time porque o stderr do processo cronometrado e a saída de time em si são enviados para o mesmo descritor de arquivo.
O utilitário time que você está usando (com base no seu uso de -f , é GNU coreutils) tem uma opção -o para dizer a ele para gravar em um arquivo diferente e -a para anexar a este ficheiro. Esta opção também existe no FreeBSD e no macOS.
#!/bin/sh
echo "$@" >>/tmp/times
exec time -f %e -a -o /tmp/times -- "$@"
Como alternativa, você pode usar a palavra-chave shell (em shells que a possuem, que inclui bash, ksh e zsh). Com a palavra-chave, você pode controlar onde as informações de tempo passam pelo redirecionamento, porque você pode especificar um redirecionamento como parte do processo cronometrado.
#!/bin/bash
echo "$@" >>/tmp/times
TIMEFORMAT='%R'
{ time "$@" 2>&3; } 3>&2 2>>/tmp/times