Manual of BASH claims: "Assignments to FUNCNAME have no effect and return an error status."
However assignments to FUNCNAME actually break FUNCNAME. I use BASH 4.3.30. Variant with "local": $ A() { echo A; declare -p FUNCNAME; local FUNCNAME=(); } $ B() { echo B; declare -p FUNCNAME; } $ A A declare -a FUNCNAME='([0]="A")' bash: FUNCNAME: variable may not be assigned value $ A A declare -a FUNCNAME='([0]="A" [1]="A")' bash: FUNCNAME: variable may not be assigned value $ A A declare -a FUNCNAME='([0]="A" [1]="A" [2]="A")' bash: FUNCNAME: variable may not be assigned value $ B B declare -a FUNCNAME='([0]="B" [1]="A" [2]="A" [3]="A")' $ A A declare -a FUNCNAME='([0]="A" [1]="A" [2]="A" [3]="A")' bash: FUNCNAME: variable may not be assigned value $ B B declare -a FUNCNAME='([0]="B" [1]="A" [2]="A" [3]="A" [4]="A")' $ Variant without "local": $ A() { echo A; declare -p FUNCNAME; FUNCNAME=(); } $ B() { echo B; declare -p FUNCNAME; } $ A A declare -a FUNCNAME='([0]="A")' $ A A declare -a FUNCNAME='([0]="A" [1]="A")' $ A A declare -a FUNCNAME='([0]="A" [1]="A" [2]="A")' $ B B declare -a FUNCNAME='([0]="B" [1]="A" [2]="A" [3]="A")' $ A A declare -a FUNCNAME='([0]="A" [1]="A" [2]="A" [3]="A")' $ B B declare -a FUNCNAME='([0]="B" [1]="A" [2]="A" [3]="A" [4]="A")' $ Also is it intentional that code after attempt of assignment to FUNCNAME is not run? The sentence in manual could be interpreted as simply setting $? to non-zero value and still running subsequent code. $ A() { echo A; local FUNCNAME=(); echo AAA; } $ A A bash: FUNCNAME: variable may not be assigned value $ -- Arfrever Frehtes Taifersar Arahesis
signature.asc
Description: This is a digitally signed message part.