我正在使用 ProcessBuilder 从我的 java 程序中运行一个 shell 脚本(在脚本顶部带有 shebang 的 ksh):
processBuilder.command("/bin/sh","-c"," . " + /somepath/script.ksh + " " + argument);
proc = processBuilder.start();
使用我的 java 程序一切正常。我想在命令行上运行命令,并认为从 java 程序运行的命令是:
/bin/sh -c . /somepath/script.ksh argument
但是,这在命令行上不起作用,我收到此错误:
/somepath/script.ksh: line 0: .: filename argument required
.: usage: . filename [arguments]
看起来“-c”标志期望下一项是命令(在我的语句中是源运算符“。”),之后它期望更多参数。所以我的脚本(/somepath/script.ksh)被当作参数而不是命令。为什么它与java程序中的processbuilder一起工作?它是否以不同的方式创建命令?