답변:
넌 선언 할 수도 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메인테이너는, 이것이 감독이라고 말한다 그것은 다음 릴리스로 변경됩니다.
bash: f: readonly function와 0이 아닌 상태 코드가 생성되지만 errexit옵션이 활성화 된 경우 종료되지 않습니다 .
bash하지 않지만 bash메일 링리스트 중 하나에 요청할 것을 요청합니다 .
bash경우에만 종료 set -ePOSIX 때 적용되는 요구 에 (그리고 readonly -fPOSIX되지 않습니다). Greg bash는 함수 선언 errexit이 종료를 트리거하는 이유로 "함수 선언 실패"를 언급하지 않는다고 지적합니다 (함수 선언이 복합 명령으로 계산되지 않으면 확실하지 않습니다). 스레드는 현재 진행 중입니다 : lists.gnu.org/archive/html/help-bash/2019-09/msg00039.html
errexit또는 set -e당신의 문제를.
typeset -r:typeset -rf f.