我已经用谷歌搜索了一段时间,每个人似乎都有不同的解决方案,但似乎没有一个对我有用。
我都尝试过ProcessBuilder
and Runtime
。两者都调用.sh
直接文件并将其输入/bin/bash
。没有运气。
回到基础,我当前的代码如下;
String cmd[] = { "~/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
这是给一个No such file or directory
错误,尽管手动运行;
~/path/to/shellscript.sh foo bar
在 bash 中完美运行。
我需要保留~
因为这个 shellscript 对于三个不同的用户来说以稍微不同的形式存在。
一种选择是处理~
你自己:
String homeDir = System.getenv("HOME");
String[] cmd = { homeDir + "/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
另一种方法是让 Bash 为您处理:
String[] cmd = { "bash", "-c", "~/path/to/shellscript.sh foo bar" };
Process p = Runtime.getRuntime().exec(cmd);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)