MYVAR = somethingがprintenvに表示されないのはなぜですか?これはgetenv機能に関連していますか?

MYVAR = somethingがprintenvに表示されないのはなぜですか?これはgetenv機能に関連していますか?

理由を理解しようとしています。stlib.hから環境変数を取得するPATH私のカスタム変数の場合(たとえばANDROID_PRODUCT_OUT、これは次のように関連していると思います。

ANDROID_PRODUCT_OUT=test
printenv | grep ANDR
#nothing

私が定義した変数がなぜ表示されないのですかprintenvgetenv("ANDROID_PRODUCT_OUT")==NULLバイナリが実行されているのと同じシェルに変数が定義されているにもかかわらず、これはなぜ関係がありますか?

ベストアンサー1

書いて

ANDROID_PRODUCT_OUT=test

ANDROID_PRODUCT_OUT現在のシェルでシェル変数を設定するだけです。フォークされたプロセス(つまり、そのシェルで実行されるすべてのコマンド)で使用できる環境変数になるようにするには、変数をエクスポートする必要があります。

export ANDROID_PRODUCT_OUT

1行に変数を設定し、自動エクスポートとしてマークすることもできます。

export ANDROID_PRODUCT_OUT=test
printenv | grep ANDR # outputs: ANDROID_PRODUCT_OUT=test

すべての分岐プログラムの変数を自動的にエクスポートせずに、実行したい特定の./myprogramプログラム(たとえば)でのみ使用できるようにするには、次のようにします。

ANDROID_PRODUCT_OUT=test ./myprogram

おすすめ記事