環境変数は子プロセスで継承されると言われていますが、シェル変数は継承されていません。ただし、次のテストでは、シェル変数が環境変数と同じように子プロセスで表示されることを示しています。違いはなんですか?
> 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