43 lines
		
	
	
		
			882 B
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			882 B
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
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:$?
 |