October 11, 2001, 2:18 PM — A shell variable is a memory storage area that can be used to hold a value, which can then be used by any built-in shell command within a single shell. An environment variable is a shell variable that has been exported or published to the environment by a shell command so that shells and shell scripts executed below the parent shell also have access to the variable.
One built-in shell command can set a shell variable value, while another can pick it up. In the following
doecho script example,
$PLACE is set in the first line and picked up in the second line by the built-in
Create this script and save it as
doecho. Change the mode using
chmod a+x doecho:
# doecho sample variable PLACE=Hollywood echo "doecho says Hello " $PLACE
Run the program as shown below.
In all of the following examples, I use the convention of
./command to execute a shell script in the current directory. You don't need to do this if your
$PATH variable contains the
. as one of the searched directories. The
./command method works for scripts in your current directory, even if the current directory isn't included on your path.
$ ./doecho doecho says Hello Hollywood $
In this first example,
$PLACE is a shell variable.
Now, create another shell script called
echoplace and change its mode to executable.
# echoplace echo $PLACE variable echo "echoplace says Hello " $PLACE
doecho to execute
echoplace as its last step.
# doecho sample variable PLACE=Hollywood echo "doecho says Hello " $PLACE ./echoplace
doecho script. The output is a bit surprising.
$ ./doecho doecho says Hello Hollywood echoplace says Hello $
In this example,
echoplace is run as the last command of
doecho. It tries to echo the
$PLACE variable but comes up blank. Say goodbye to Hollywood.