aboutsummaryrefslogtreecommitdiff
path: root/shell/ash_test/ash-vars/readonly0.tests
blob: 94af79060416f21adfb128adda970fb0b13f11b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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:$?