.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
行. ./.env
はset +a
別々のシェルで実行されます。効果は、. ./.env
コマンドが実行されるシェルでのみ表示されます。
答え2
現代のmake
実装には、環境管理のサポートが含まれます。
GNU makeは私のsmake
dosと私の拡張バージョン(SunPro Make
tarballから)の両方をschilytools
サポートしています。
env
別の行に割り当てとステートメントを含めるようにファイルを慎重に作成した場合は、export
そのinclude
ファイルenv
をMakefile
。
たとえば、次のようになります。
include $(HOME)/.env
あなたのMakefile
。