É simplesmente uma questão de cercar tudo com verificações de erros apropriadas:
FNDIR=~/.bash_functions
if [ -d $FNDIR ]
then
for f in $FNDIR/*.sh
do
test -x $f && source $f
done
fi
Estou propositadamente não citando valores aqui porque estou supondo que você não terá um diretório base ou nome de script com espaços nele. Isso parece ir além da robustez e da proteção contra a malícia. Uma vez que estes são scripts que você está escrevendo para si mesmo, eu não acho que precisamos ir tão longe. :)