我设置了一个变量MY_HOME,我也将其导出。因此,导出它应该使所有子进程都可以看到它。
我有以下脚本。
echo "MY_HOME:" $MY_HOME
if [ "$MY_HOME" = "" ];
then
echo "ENVIRONMENT VARIABLE NOT SET"
echo "READ THE DOCUMENTATION FOR THE ERROR"
exit 0
fi
从我导出MY_HOME变量的shell中调用此脚本。但似乎MY_HOME没有初始化。为什么会这样?
我的学习是,导出应该使变量对子进程可见。并且./script会生成一个子shell,它是当前shell的子代。
我错过了什么吗?为什么这对我不起作用?
答案 0 :(得分:3)
您的comment表示您正在使用sudo
执行脚本。
执行脚本时指定-E
sudo
选项。
-E The -E (preserve environment) option indicates to the
security policy that the user wishes to preserve their
existing environment variables. The security policy may
return an error if the -E option is specified and the user
does not have permission to preserve the environment.