Ho definito una funzione di shell (chiamiamola clock), che voglio usare come wrapper per un altro comando, simile alla timefunzione, ad es clock ls -R.
La mia funzione shell esegue alcune attività e quindi termina exec "$@".
Vorrei che questa funzione funzionasse anche con gli incorporati della shell, ad esempio clock time ls -Rdovrebbe produrre il risultato dell'integrato timee non l' /usr/bin/timeeseguibile. Ma execfinisce sempre per eseguire invece il comando.
Come posso far funzionare la mia funzione Bash come wrapper che accetta anche gli elementi incorporati della shell come argomenti?
Modifica : ho appena appreso che timenon è un Bash integrato, ma una parola speciale riservata relativa alle pipeline. Sono ancora interessato a una soluzione per built-in anche se non funziona time, ma una soluzione più generale sarebbe ancora migliore.
exec bash -c \' "$@" \'. A meno che il tuo comando nel primo parametro non sia riconosciuto come uno script di shell, verrà interpretato come un file binario per essere eseguito direttamente. In alternativa, e più semplicemente, perdiexece chiama"@"dalla tua shell originale.