I'm facing a wierd issue. I've a vm with solaris 11, and trying to write some bash scripts.

if, on the shell, I type :

export TEST=aaa

and subsequently run:

set

I correctly see a new environment variable named TEST whose value is aaa. If, however I do basically the same thing in a script. when the script terminates, I do not see the variable set. To make a concrete example, if in a file test.sh I have:

#!/usr/bin/bash
echo 1: $TEST   #variable not defined yet, expect to print only 1:
echo 2: $USER
TEST=sss
echo 3:  $TEST
export TEST
echo 4:  $TEST

it prints:

1:
2: daniele
3: sss
4: sss

and after its execution, TEST is not set in the shell. Am I missing something? I tried both to do export TEST=sss and the separate variable set/export with no difference.

link|improve this question
feedback

2 Answers

up vote 3 down vote accepted

export - make variable available for child processes, but not for parent.

source - run script in shell without creating child process

For exalmpe, persistent variable can be realised by writing to file

#!/usr/bin/bash
echo 1: $TEST   #variable not defined yet, expect to print only 1:
CONFIGFILE=~/test-persistent.vars
if [ -r ${CONFIGFILE} ]; then
  # Read the configfile if it's existing and readable
  source ${CONFIGFILE}
fi
echo 2: $TEST
echo 3: $USER
TEST=sss
echo 4:  $TEST
echo TEST="$TEST"> ${CONFIGFILE}
echo 5:  $TEST
link|improve this answer
This is also not exactly what I wanted to achieve, but I got your point. thanks. – Daniele Dec 1 '11 at 19:11
feedback

To make your variables visible, you need to source the script which exports your variables. See man source.

link|improve this answer
likely there isn't a source manpage, and you want help source in bash instead. – stew Nov 30 '11 at 17:20
this works if I directly invoke the script, (i.e. if I source the script with the export from the shell), but it doesn't seem to work if I source the script from within another script. – Daniele Dec 1 '11 at 19:03
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.