Java Runtime.exec()不';我不尊重Linux别名
我有一个已编译的第三方java程序,它使用Runtime.exec()生成一个进程,但我想在进程开始使用alias时向进程添加额外的参数,但java Runtime.exec()似乎不支持。我试着用我自己的程序,但还是不见效,有什么帮助吗Java Runtime.exec()不';我不尊重Linux别名,java,linux,process,alias,spawn,Java,Linux,Process,Alias,Spawn,我有一个已编译的第三方java程序,它使用Runtime.exec()生成一个进程,但我想在进程开始使用alias时向进程添加额外的参数,但java Runtime.exec()似乎不支持。我试着用我自己的程序,但还是不见效,有什么帮助吗 import java.io.*; public class Exec { public static void main(String args[]) { try { S
import java.io.*;
public class Exec {
public static void main(String args[]) {
try {
String line;
Process p = Runtime.getRuntime().exec(args[0]);
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
System.out.println("Done.");
}
catch (Exception err) {
err.printStackTrace();
}
}
}
输出:
alias ls='ls -ltr'
java Exec ls
Exec.class
Exec.java
ls
-rw-r--r-- 1 user staff 1216 May 16 09:40 Exec.class
-rw-r--r-- 1 user staff 710 May 16 09:41 Exec.java
原因是alias属于交互式shell进程,所以java无法看到它 你可以在这里看到细节 如果要执行别名: 你的壳是bash
java执行器“bash-i-c'ls”
你的壳是zsh
java执行器“zsh-i-c'ls”