How to import a variable from another script?

I want to get a variable from another script, as demonstrated in this question on Stack Overflow:

How to reference a file for variables in a bash script

However, the answer uses the source command which is only available in bash. I want to do this in a portable way.

I have also tried

a.sh

export VAR="foo"
echo "executing a"

b.sh

#!/bin/sh
./a.sh
echo $VAR

But of course that does not work either. How to do this?

2 Answers

First of all, be aware that var and VAR are different variables.

To answer your question the . command is not bash-specific:

# a.sh
num=42
# b.sh
. ./a.sh
echo $num

The variables in "a" do not need to be exported.

3

Environment variables are only inherited from parent to child and not the other way round. In your example, b.sh calls a.sh, so a runs as a child of b. When a.sh exports var, it won't be seen by b.sh. Amend the logic so that the parent process exports the variable, e.g.

a.sh:

echo In a.sh...
VAR="test"
export VAR
./b.sh

b.sh:

echo In b.sh...
echo $VAR
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like