Ви можете оголосити 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
.