bash 4.4.0 (I did not investigate other versions) does not produce an error message if you try to assign something to the BASHPID readonly using either arithmetic or normal assignment. Other readonlies produce a message on an assignment attempt. BASHPID seems to be an exception.
<background type="superfluous"> Particularly annoying is that a non-interactive shell will exit silently on a mistaken attempt to assign to BASHPID. I was making a bash function to determine if we're in a subshell. Because of the lack of error message, it took some doing to find my typo in return "$((BASHPID = $$))" (of course, comparison is '==' and not '='). Not even 'set -x' will give a clue; it exits before producing relevant tracing output. </background> Proof below. (The exit status of the previous command is included in the prompt in the output below.) [0]$ UID=0 bash: UID: readonly variable [1]$ BASHPID=0 [1]$ ((UID=0)) bash: UID: readonly variable [1]$ ((BASHPID=0)) [1]$ Thanks, - Martijn