It works in the interactive shell but not from in a script. This script and the trace that follows demostrates:
set -x
tail -n 2 ../.bash_profile
tail -n 2 ../.bashrc
cat ../FUNC_FILE
FUNC
cat testfunc
testfunc
***14:43:56 502 ~/work>FUNC
imafunc
***14:44:02 503 ~/work>t
++ tail -n 2 ../.bash_profile
. ~/FUNC_FILE
compgen -A function # List all functions
++ tail -n 2 ../.bashrc
. ~/FUNC_FILE
compgen -A function # List all functions
++ cat ../FUNC_FILE
function FUNC () { echo imafunc; }
++ FUNC
./t: line 5: FUNC: command not found
++ cat testfunc
FUNC
++ testfunc
./testfunc: line 1: FUNC: command not found
The answer is here. You need to export the function after sourcing it in ~/.bash_profile.