6

次の Java コードを使用してターミナルを起動します。

final ProcessBuilder processBuilder = new ProcessBuilder("/usr/bin/open", "-b",
                                                         "com.apple.Terminal",
                                                         "/Volumes");
final Map<String, String> environment = processBuilder.environment();
final String path = environment.get("PATH");
environment.put("PATH", "/mypath" + File.pathSeparator + path);
final Process process = processBuilder.start();
process.waitFor();

これにより、ターミナル ウィンドウが開かれますが、PATH の変更は無視されるようです。

Volumes$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

この問題は、ターミナルの起動方法に関連しているようです。環境変数を変更して他のアプリケーションを起動すると、正常に動作します。

ターミナルが既に開いている場合でも、環境変数の変更を受け入れるようにターミナルを起動する方法は?

4

2 に答える 2

2

いくつかの考え-Linuxしか機能していないため、何も試すことができません。

コマンドを使用してターミナルを開いていますopen。おそらく、端末の実行可能ファイルを直接実行すると (.app フォルダー内の実際のバイナリに移動する必要があると思います)、環境設定が通過するでしょうか?

または、ターミナルを起動する別の方法はopen、保存されたターミナル設定ファイル (拡張子 .terminal、Terminal.app の [設定] パネルで作成) を使用することです。これにより、これらの設定が設定されたターミナルが開きます。私は何年もターミナルの設定をいじっていませんでしたが、おそらくそこにパスを設定する方法はありますか?

于 2013-11-28T11:29:23.880 に答える