| 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) |
| 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 |
| |
| echo |
| export b |
| # this fails to both set and export a: |
| a=Z env | 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 |
| true; unset a |
| echo Fail:$? |