2

基本に関する質問: スクリプトから起動されたプログラムの環境変数を調整しているときに、sh (実際には bash にリンクされているようです) でやや奇妙な動作になりました: 変数の設定がコマンド ライン パラメーターを台無しにしているようです。

誰かがなぜこれが起こるのか説明できますか?

簡単なスクリプト:

#! /bin/sh

# Messes with $1 ??
set ANT_OPTS=-Xmx512M
export ANT_OPTS

# Works
# export ANT_OPTS=-Xmx512M

echo "0 = $0"
echo "1 = $1"

これを上位の代替 (セット + エクスポート) で実行すると、結果は次のようになります。

$ ./test.sh foo
0 = ./test.sh
1 = ANT_OPTS=-Xmx512M

しかし、より低い選択肢 (輸出ストレート) では、結果は私が想定したとおりです。

$ ./test.sh foo
0 = ./test.sh
1 = foo

確かに論理的な説明はありますが、私はまだそれを理解していません。アイデアを持っている誰か?

br, トウコ

4

2 に答える 2

5

ANT_OPTS=-Xmx512Mの代わりに使用する必要がありset ANT_OPTS=-Xmx512Mます。

更新:およびマニュアルの説明については、こちらを参照してください。set

于 2010-05-26T13:43:39.073 に答える
2

「set」は、Bourne Shell の設定変数の一部ではありません。そうあるべき

ANT_OPTS=-Xmx512m
export ANT_OPTS 
于 2010-05-26T13:44:12.850 に答える