| unset a b |
| # |
| readonly a=A |
| b=B |
| readonly b |
| # readonly on already readonly var is harmless: |
| readonly b a |
| readonly | grep '^readonly [ab]=' |
| # this should work: |
| export a b |
| export -n a b |
| echo Ok:$? |
| env | grep -e^a= -e^b= # shows nothing |
| |
| echo |
| # these should all fail (despite the same value being assigned) |
| # bash does not abort even in non-interactive more (in script) |
| # ash does, using subshell to continue |
| true; (a=A) |
| echo Fail:$? |
| true; (readonly a=A) |
| echo Fail:$? |
| |
| echo |
| # in bash, assignment in export fails, but export succeeds! :) |
| # we don't mimic that! |
| true; (export a=Z) |
| echo Fail:$? |
| #env | grep '^a=' |
| #echo "^^^a is exported" |
| export -n a # undo that bashism, if it happens |
| |
| ## ash: assignment errors in "a=Z CMD" lead to CMD not executed |
| ## echo |
| ## export b |
| ## # this fails to both set and export a: |
| ## a=Z env | echo grep '^[ab]=' |
| ## echo "^^^a is not exported" |
| ## # but external command does get executed, and $? is not mangled (stays 42): |
| ## (exit 42); a=Z env echo Visible:$? |
| |
| echo |
| # ash: this fails *silently*, bug? bash says "cannot unset: readonly variable" |
| true; unset a |
| echo Fail:$? |