次の 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
この問題は、ターミナルの起動方法に関連しているようです。環境変数を変更して他のアプリケーションを起動すると、正常に動作します。
ターミナルが既に開いている場合でも、環境変数の変更を受け入れるようにターミナルを起動する方法は?