Da documentação:
Functions defined by the function name syntax and called by name execute in the same process as the caller and share all files and present working directory with the caller. Traps caught by the caller are reset to their default action inside the function.
Considerando que
Functions defined with the name() syntax and functions defined with the function name syntax that are invoked with the . special built-in are executed in the caller's environment and share all variables and traps with the caller.
A solução é não usar a palavra-chave function
; manter a forma padrão de definições de funções.
Como alternativa, se você estiver interessado apenas em algumas funções, typeset -tf fname
apenas rastreará a função fname
(se ela foi definida com a palavra-chave function
).
Para interromper o rastreamento: typeset +tf fname
Para rastrear todas essas funções no ksh93: typeset -tf $(typeset +f)
Para ver quais funções são rastreadas: typeset +tf
Para interromper o rastreamento de todas as funções: typeset +tf $(typeset +tf)