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

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

Alexander Ross

Alexander Ross

Gaming, Esports & Interactive Media Writer

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.

Share this article
Twitter Facebook Pinterest