0

Java を使用して環境変数 PATH を更新するにはどうすればよいですか。同じコードを使用して、それぞれの OS でコードを実行すると、Windows と Unix で PATH 変数を更新できるはずです。

前もって感謝します。

よろしく、サン

4

1 に答える 1

0

Unix (c 言語) では、さまざまな形式の「exec」コマンドを使用して PATH を変更できますが、追加/更新された変数を現在のプログラムによって実行されるものに渡すためにのみ使用できます。

Unix の原則の 1 つは、環境はコードの実行を開始したときと変わらないということです。そのため、コード (java) が JVM を介して実行される場合でも、この規則に準拠する必要があります。JVM が終了すると、PATH への更新はすべて失われます。

これは、Windows には当てはまりません。プログラムは現在の環境を変更できるため、Windows プラットフォームでコードを実行した後、別のディレクトリに移動することがよくあります。

残念ながら、このため、Windows と Unix の両方でそれを行う手段はありません。Unix で期待できる最善の方法は、次のようなものを用意することです。

myScript.sh:

# This is a script that executes the program and then 'includes' a script
/path/to/my/program  # which writes the following file containing environment changes
. /this/file/created/by/above

「シェル」インタープリターで(必要に応じてコマンドプロンプト):

# Execute my program using myScript.sh
. ./myScript.sh

これにより、パスの変更が保持されますが、先頭のドットなしで「myScript.sh」を呼び出すことはできません。忘れた場合は、実行後に「/this/file/created/by/above」をインクルードできます。

もちろん、これを使用する場合は、複数のユーザーによる同時実行の可能性を処理する必要があります。したがって、ファイル「/this/file/created/by/above」は、実行ごとに異なる必要があります。「$$」パラメーターの使用の可能性を調査してください。

Ps。「/path/to/my/program」は、Java コードを実行する JVM にすることができます。

セキュリティ: もし私が「ルート」ユーザーだったら、あなたのコードを絶対に実行したくありません。プログラムはそのファイル「/this/file/created/by/above」に何でも入れることができ、ルートによって実行されます。

于 2013-03-14T18:24:34.247 に答える