2011-10-18 56 views
0

私はmakefileでsetenv変数を使用しようとしていますが、makeファイルを実行するとsetenv:commandが見つかりません。makefileでsetenvを使用する

どうすれば使用できますか?

実際、私は複数の環境変数を設定するシェルスクリプトを実行したかったのです。

リストは非常に巨大なので、スクリプトを使用する以外は選択肢がありません。 abcd:=/xx/yy/zz

お勧めします。

P.S.同じコマンド setenv xxx yyyはシェルで非常にうまく動作します このコマンドを使って直接makefileやmakefileでスクリプトを実行すると失敗します。 '

答えて

3

なぜエクスポートコマンドを使用しませんか?

+0

実際に私は以前シェルで実行していたスクリプトをあらかじめ作成していますが、ファイルを作成するために移動したいと思います。私はこのコマンドを使用して、手作業ですべてをエクスポートして多くの時間を殺す場所がたくさんあります。 – coolcracker

+0

"手動で変換する"?なぜそれらをすべて置き換えるためにperlのone-linerを使用しないのですか? – siukurnin

2

シェルが別のプロセスを実行すると動作しません環境変数を設定するスクリプトを実行で。シェルスクリプトsourceが必要です。シェルに基づいてsourceまたは.を使用することができます。以下は参考用のサンプルです。ここで、setvar.shは変数&を設定します.print.shはそれを表示します。 Makefileの(mkfileによって)にsetvar.shが.

$ cat setvar.sh 

export TEST=ABC 

$ cat print.sh 

echo $TEST 
$ cat mkfile 
test: 
    . ./setvar.sh && ./print.sh 

.SILENT:test 
$ make -f mkfile 
ABC 

を使用して調達しているあなたもinclude私は

$ cat mkfile2 
include setvar.sh 
test: 
    ./print.sh 

.SILENT:test 
$ make -f mkfile2 
ABC 

・ホープ、このことができます、例えば推測することができます!

0

私はsetenvがshシェルの組み込みではないと思います。 GNU Makeを使用している場合は、デフォルトシェルが使用されます。あなたの状況では、おそらくbashのような別のシェルを使いたいと思うでしょう。あなたが好きな何をしたいのメイクファイルにSHELL変数を設定することで、次の操作を行います。

SHELL := /usr/bin/bash 

GNUのより多くの情報のチェックアウトthisセクションのためのマニュアルを作成します。これは、SHELL変数のさまざまな振る舞いを詳細に説明しています。また、SHELL変数がどのように動作しているか、あるいはシェルから継承されていないか、makeは異なるプラットフォームから呼び出されます。

編集:私はあなたがおそらくあなたがそうしなければならないと思っている方法と環境でsetenvコマンドを使用しないと思われる環境変数を設定していないと他のポスターの意味に同意します。私はあなたの元の質問にただ応えています。 makeファイルの変数については、GNU Makeマニュアルのthese other sectionsを参照してください。

+0

情報をありがとう..それは助ける:) – coolcracker

-1
export MY_VAR := "/package/your_path" 
関連する問題