Ви можете оголосити fфункцію лише для читання, використовуючи readonly -f fабо declare -g -r -f f( readonlyеквівалентно declare -g -r). Саме -fці вбудовані утиліти змушують їх діяти fяк ім'я функції, а не змінної 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
Як бачите, робить функція лише для читання не тільки захищає її від перекриття, але й захищає від невстановлення (видалення повністю).
В даний час (станом на bash-5.0.11) спроба змінити функцію лише для читання не припиняє оболонку, якщо використовується errexitопція оболонки ( set -e). Чет, керівник bash, каже, що це нагляд і що це буде змінено наступним випуском.
typeset -r:typeset -rf f.