에서 bash
쉘, 우리는 함수를 정의 할 수 있습니다 f
와를
f(){ echo Hello; }
그런 다음 오류 또는 경고 메시지없이 다시 선언 / 재정의하십시오.
f(){ echo Bye; }
이런 식으로 함수가 재정의되는 것을 방지하는 방법이 있다고 생각합니다.
답변
넌 선언 할 수도 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
메인테이너는, 이것이 감독이라고 말한다 그것은 다음 릴리스로 변경됩니다.