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:
@@ -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
|
||||
|
Reference in New Issue
Block a user