java代码如下:String[] cmd = new String[]{"/home/a/linuxshell.sh"};
Process ps = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer("正常信息:");
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
sb.append("\n错误信息:");
br = new BufferedReader(new InputStreamReader(ps.getErrorStream()));
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
System.out.println(sb.toString());
shell#!/bin/bash
cd /home/a
dir这时出现错误信息了,不是java错误,是linuxshell系统出来的错误
打印了:错误信息:/home/a/linuxshell.sh: line 2: dir: No such file or directory但如果在linuxshell中运行的话 没有任何问题。
Process ps = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer("正常信息:");
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
sb.append("\n错误信息:");
br = new BufferedReader(new InputStreamReader(ps.getErrorStream()));
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
System.out.println(sb.toString());
shell#!/bin/bash
cd /home/a
dir这时出现错误信息了,不是java错误,是linuxshell系统出来的错误
打印了:错误信息:/home/a/linuxshell.sh: line 2: dir: No such file or directory但如果在linuxshell中运行的话 没有任何问题。
echo "$USER" 发现就是当前登陆用户
并不是说java找不到linuxshell.sh这个文件。 而是java调用了linuxshell.sh后 sh执行到第2行
提示找不到文件或目录。 请问一下各位 java调用shell的时候 默认是在哪个路径呢?我cd到/home/a这个路径,肯定是没问题的,但是dir就出问题了。这太奇怪了。
难道java调用shell 还跟权限什么的有关吗?可是我在linux中直接调用linuxshell.sh文件是可以执行的,java调用就不行了,并且java调用时,我还echo "$USER" 发现就是当前登陆用户,操作文件 执行文件等权限,肯定是拥有的。再说 dir根本就没什么权限要求啊。且报的也不是权限的错。而是路径问题。纠结啊。。
#!/bin/bash
cd /home/a/
dir
你直接执行sh文件,可以通过解释吗?
应该通过runtime执行sh 或者 bash
然后给这个process的输出流写入"/home/a/linuxshell.sh\n"