Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Runtime.exec()不';我不尊重Linux别名_Java_Linux_Process_Alias_Spawn - Fatal编程技术网

Java Runtime.exec()不';我不尊重Linux别名

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

我有一个已编译的第三方java程序,它使用Runtime.exec()生成一个进程,但我想在进程开始使用alias时向进程添加额外的参数,但java Runtime.exec()似乎不支持。我试着用我自己的程序,但还是不见效,有什么帮助吗

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”