10

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.

2 Answers 2

15

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 
1
  • This is also not exactly what I wanted to achieve, but I got your point. thanks. Commented Dec 1, 2011 at 19:11
5

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

2
  • 1
    likely there isn't a source manpage, and you want help source in bash instead. Commented Nov 30, 2011 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. Commented Dec 1, 2011 at 19:03

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.