将参数传递给 Runtime.getRuntime().exec(),开头有一个选项

passing argument to Runtime.getRuntime().exec() with an option at the beginning

我正在尝试将如下命令传递给 Runtime.getRuntime().exec(),其中选项应该位于开头。

option="something" ./test.sh a b

无论我在尝试什么,我都会得到这个异常:

Cannot run program "option="something"": error=2, No such file or directory

有什么想法吗?

option="something" 仅在 shell 中有效,可以为此特定进程设置环境变量。要在 java 中执行此操作,您必须使用将环境变量作为参数的 exec 重载之一。

如: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String[],%20java.lang.String[])

或使用 ProcessBuilder: https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

编辑:

您应该注意,为新进程显式设置环境变量会导致当前程序中的所有环境变量都被忽略。如果你想传递当前的环境变量,你必须自己包含它们。