環境変数のエクスポートがMakefileでは機能しません。

環境変数のエクスポートがMakefileでは機能しません。

私たちは次のことを行いますMakefile

test:
    export SOME_ENV=someTest
    go test -tags=integration -v -race  ./tests/integrationtest/...

シェルプロンプトでSOME_ENVを設定し、次のコマンド()はgo test内部的に.someTest.envファイルを選択します。

 $ export SOME_ENV=someTest
 $ go test -tags=integration -v -race  ./tests/integrationtest/...

しかし、Makefileメソッドは機能しません。

Makefile環境変数を設定する方法がないのはなぜですか?

注:Makefileには、このエクスポートの影響を受けない別の操作があります。

ベストアンサー1

レシピの各行は、別々のシェル呼び出しを使用して実行されます。だから

export SOME_ENV=someTest

実行された後、新しいシェルで

go test ...

後者は環境変数を見ることができません。

変数をエクスポートするには、Makeのコンストラクタを使用する必要があります。

export SOME_ENV := someTest

test:
        go test ...

またはインライン変数を指定します。

test:
        SOME_ENV=someTest go test ...

または、次の2行が同じシェルで実行されていることを確認してください。

test:
        export SOME_ENV=someTest && \
        go test ...

おすすめ記事