5

Makefile 内で変更した PATH を現在のターミナルにエクスポートする際に問題が発生しています。Makefileディレクトリがある場所にあるbinフォルダーをPATHに追加しようとしています。

メイクファイルの関連するストリップは次のとおりです。

PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)

エコーはそれを正しく出力しますが、ターミナルでエコーをやり直しても、PATH は同じままです。

助けてくれてありがとう。

4

3 に答える 3

6

exportGNU make を使用している場合は、サブプロセスの環境への PATH 変数を明示的に指定する必要があります。

export PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)
于 2011-04-17T21:43:11.247 に答える
1

あなたがやろうとしていることは不可能です。Make は、ターミナルのシェルとは別のプロセスで実行されています。make プロセスでの環境への変更は、シェルには転送されません。

おそらく、exportステートメントの効果を混乱させています。exportmake プロセスからシェルに変数の値をエクスポートしません。代わりに、export変数をマークして、make の子プロセスに転送されるようにします。私の知る限り、親プロセスの環境を変更する方法はありません (make を開始したシェルは、make プロセスの親プロセスです)。

おそらく、この回答により、変数を子プロセスにエクスポートするという概念が少し明確になります。

于 2011-04-17T22:50:03.473 に答える