makefileのファイルから環境変数をエクスポートする

makefileのファイルから環境変数をエクスポートする

.envファイルからすべての変数をエクスポートするmakeアクションを作成しようとしています。これは次のとおりです。

A=1
B=2

端末に入力すると:

set -a
. ./.env
set +a

それは非常にうまく動作します。

ただし、Makefileの同じ操作は機能しません。

export.env:
    set -a
    . ./.env
    set +a


make export.env # done
printenv | grep A # nothing!

make 操作が完了した後も維持するには、これらの変数が必要です。

答え1

他のコースと同様に、make 既存のプロセスの環境を変更できません。、起動するプロセスに渡される環境のみを制御できます。入力バッファをいっぱいにしないと、必要なものを達成できません。

また、make各コマンドラインは異なるシェルで処理されるため、set -a. ./.envset +a別々のシェルで実行されます。効果は、. ./.envコマンドが実行されるシェルでのみ表示されます。

答え2

現代のmake実装には、環境管理のサポートが含まれます。

GNU makeは私のsmakedosと私の拡張バージョン(SunPro Maketarballから)の両方をschilytoolsサポートしています。

env別の行に割り当てとステートメントを含めるようにファイルを慎重に作成した場合は、exportそのincludeファイルenvMakefile

たとえば、次のようになります。

include $(HOME)/.env

あなたのMakefile

関連情報