11

RunTimeクラス経由で Linux コマンドを実行できます。プログラムでJavaからLinuxグローバル環境を設定する方法はありますか?

Java で次の Linux コマンド ステートメントをエミュレートしたい

root@machine:/tmp# export TEST=v2

以下のように ProcessBuilder を使用しましたが、TEST 変数は変更されません。

ProcessBuilder pb = new ProcessBuilder("/bin/bash","-c","export TEST=v3" + "&& exec");

更新: 実際、私の最終的な目標は、アプリケーションとマシンの両方が開始され、これらのアクションが EMAIL_NAME に送信されるときに、電子メール アドレスとして EMAIL_NAME 環境を使用することです。その場合、純粋な Java コードに対して Linux グローバル環境を設定することはできないことを理解しています。したがって、回避策は、EMAIL_NAME がファイルに保持され、Linux スクリプトまたは Java コードによって更新または読み取られることです。

4

4 に答える 4

10

環境変数は、設定されている場合、変数が設定されているプロセスによって生成されたプロセスでのみ使用できます。したがって、システム全体に影響を与える変数を設定することを本当に求めている場合は、そうではありません。Linuxではインタラクティブにそれを行うことはできません。最善の方法は、システム起動ファイルの1つを変更して、上記の変数を含めることです。これにより、将来行うすべての項目にその変数が含まれるようになります。

変数を設定して複数のプロセスを実行するだけの場合は、ProcessBuilderを使用して、それを使用して生成されたプロセスの環境を設定できます。複数のプロセスで環境を再利用することは、それでは非常に簡単です。

于 2012-12-24T14:22:10.350 に答える
3

「Linuxグローバル環境」とは、Linux環境変数のことですか?もしそうなら、答えはノーだと思います。それはJavaの問題ではないからです。プロセスが環境変数を設定すると、それ自体とその子プロセスにのみ影響を与える可能性があります。

于 2012-12-24T14:24:59.253 に答える
-2

このコード行をbashで使用します

echo -e PATH=\"/usr/lib/jvm/java-7-openjdk-i386/bin:\$PATH\" >> $HOME/.profile

withは、ローカルユーザーのパスを連結します

于 2012-12-24T14:23:53.877 に答える