1IFS=,
2
3SPECIAL="break,\
4	:,\
5	continue,\
6	. /dev/null,\
7	eval,\
8	exec,\
9	export -p,\
10	readonly -p,\
11	set,\
12	shift,\
13	times,\
14	trap,\
15	unset foo"
16
17# If there is no command word, the shell must abort on an assignment error.
18${SH} -c "readonly a=0; a=2; exit 0" 2>/dev/null && exit 1
19
20# Special built-in utilities must abort on an assignment error.
21set -- ${SPECIAL}
22for cmd in "$@"
23do
24	${SH} -c "readonly a=0; a=2 ${cmd}; exit 0" 2>/dev/null && exit 1
25done
26
27# Other utilities must not abort; we currently still execute them.
28${SH} -c 'readonly a=0; a=1 true; exit $a' 2>/dev/null || exit 1
29${SH} -c 'readonly a=0; a=1 command :; exit $a' 2>/dev/null || exit 1
30