0

変数 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 変数をエクスポートしたシェルから呼び出されます。しかし、MY_HOME が初期化されていないようです。なぜそうなのですか?

私の学んだことは、エクスポートすると変数が子プロセスに見えるようになるはずだということです。そして ./script は、現在のシェルの子であるサブシェルを生成します。

何か不足していますか?なぜこれがうまくいかないのですか?

4

1 に答える 1

3

あなたのコメントは、を使用してスクリプトを実行していると言っています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.
于 2013-09-16T05:52:30.870 に答える