Говорят, что переменные среды наследуются в дочерних процессах, а переменные оболочки - нет. Однако следующий тест показывает, что переменные оболочки рассматриваются в дочернем процессе как переменные среды. В чем разница?
> bash --version
GNU bash, version 3.2.39(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
> export TEST="ENV_TEST" #env var
> sh -c "echo \$TEST"
ENV_TEST
> TEST="SHELL_TEST" #shell var
> sh -c "echo \$TEST" #shell var is seen in child process
SHELL_TEST