Não tente rastrear quais variáveis e funções você cria. Em vez disso, execute o código em uma subchave. Quando a subshell for concluída, todas as variáveis e funções definidas na subshell desaparecerão.
No bash, uma forma de colocar explicitamente comandos em um subshell é colocar os comandos dentro dos parens: (...)
. Por exemplo, vamos definir duas variáveis e uma função dentro de um subshell e executar a função:
$ ( a=1; b=2; fn() { echo "a=$a b=$b"; }; fn )
a=1 b=2
Após a sub-camada terminar, todos serão apagados:
$ fn
bash: fn: command not found