hush: do not assign to readonly VAR in "VAR=VAL CMD" syntax too

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2017-07-18 02:44:06 +02:00
parent 38ef39a1ab
commit 5b2cc0aaee
3 changed files with 33 additions and 12 deletions

View File

@@ -1,10 +1,12 @@
unset a b
readonly a=A
b=B
readonly b
# readonly on already readonly var is harmless
# readonly on already readonly var is harmless:
readonly b a
readonly | grep '^readonly [ab]='
# this should work
# this should work:
export a b
export -n a b
echo Ok:$?
@@ -12,13 +14,23 @@ env | grep -e^a= -e^b= # shows nothing
# these should all fail (despite the same value being assigned)
# bash does not abort even in non-interactive more (in script)
true
a=A
true; a=A
echo Fail:$?
true; readonly a=A
echo Fail:$?
# in bash, assignment in export fails, but export succeeds! :)
# we don't mimic that!
true; export a=Z
echo Fail:$?; true
readonly a=A
echo Fail:$?; true
export a=A
echo Fail:$?; true
a=A echo Visible:$? # command still runs
#env | grep '^a='
#echo "^^^a is exported"
export -n a # undo that bashism, if it happens
export b
# this fails to both set and export a:
a=Z env | grep '^[ab]=' # command still runs
echo "^^^a is not exported"
unset a
echo Fail:$?; true