Definí una función de shell (llamémosla clock
), que quiero usar como un contenedor para otro comando, similar a la time
función, por ejemplo clock ls -R
.
Mi función de shell realiza algunas tareas y luego termina con exec "$@"
.
Me gustaría que esta función funcione incluso con las funciones integradas de shell, por ejemplo, clock time ls -R
debería generar el resultado de la función time
incorporada, y no el /usr/bin/time
ejecutable. Pero exec
siempre termina ejecutando el comando en su lugar.
¿Cómo puedo hacer que mi función Bash funcione como una envoltura que también acepta incorporaciones de shell como argumentos?
Editar : Acabo de enterarme que time
no es un Bash incorporado, sino una palabra reservada especial relacionada con las tuberías. Todavía estoy interesado en una solución para dispositivos integrados, incluso si no funciona time
, pero una solución más general sería aún mejor.
exec bash -c \' "$@" \'
. A menos que su comando en el primer parámetro se reconozca como un script de shell, se interpretará como un binario que se ejecutará directamente. Alternativamente, y de manera más simple, simplemente omitaexec
y llame"@"
desde su shell original.