Eu defini uma função shell (vamos chamá-lo clock), que eu quero usar como invólucro para outro comando, semelhante à timefunção, por exemplo clock ls -R.
Minha função shell executa algumas tarefas e termina com exec "$@".
Eu gostaria que essa função funcionasse mesmo com os shell embutidos, por exemplo, clock time ls -Rdeve gerar o resultado do timeembutido, e não do /usr/bin/timeexecutável. Mas execsempre acaba executando o comando.
Como posso fazer com que minha função Bash funcione como um invólucro que também aceite argumentos internos do shell?
Edit : Acabei de saber que timenão é um Bash embutido, mas uma palavra reservada especial relacionada a pipelines. Ainda estou interessado em uma solução para embutidos, mesmo que não funcione time, mas uma solução mais geral seria ainda melhor.
exec bash -c \' "$@" \'. A menos que seu comando no primeiro parâmetro seja reconhecido como um script de shell, ele será interpretado como um binário para ser executado diretamente. Alternativamente, e de forma mais simples, apenas perca aexecchamada e"@"do seu shell original.