Você pode declarar fcomo uma função somente leitura usando readonly -f fou declare -g -r -f f( readonlyé equivalente a declare -g -r). É a -fopção para esses utilitários internos que os faz agir fcomo o nome de uma função, e não na variável f.
$ f(){ echo Hello; }
$ readonly -f f
$ f(){ echo Bye; }
bash: f: readonly function
$ unset -f f
bash: unset: f: cannot unset: readonly function
$ f
Hello
Como você pode ver, tornar a função somente leitura não apenas a impede de ser substituída, mas também a de ser desmarcada (removida completamente).
Atualmente (a partir de bash-5.0.11), tentar modificar uma função somente leitura não encerraria o shell se alguém estiver usando a errexitopção shell ( set -e). Chet, o bashmantenedor, diz que isso é um descuido e que será alterado no próximo lançamento.
typeset -r:typeset -rf f.