Команды bash, использующие Java Process Builder для копирования файла

Я использую следующий код Java для выполнения команд bash, при попытке скопировать файлы функция возвращает ненулевое значение, но я могу создавать файлы.

команда копирования: cp demo.txt /shared

вывод: 127

команда создания файла: echo 'sample text' > demo.txt

вывод: 0

public static int run(final String command)  
{
    String[] finalCommand;
    Process process=null;
    int temp=0;

        finalCommand = new String[3];
        finalCommand[0] = "bash";//"/usr/bin/ksh";
        finalCommand[1] = "-c";
        finalCommand[2] = command;

try {
    final ProcessBuilder processBuilder = new ProcessBuilder(finalCommand);
    processBuilder.redirectErrorStream(true);
    process = processBuilder.start();
    temp=process.waitFor();
    } 
    catch (IOException e) 
    { 
    System.out.println( e.getMessage()); 
    } 
    catch (InterruptedException e) { 
    System.out.println(e.getMessage()); 
    }
    return temp;
}

пожалуйста помоги

1 ответ

Одна из возможностей сбоя cp и работы echo связана с тем, что cp является внешней командой, а echo - встроенной командой.

Внешняя команда может быть найдена только по имени файла, если переменная среды PATH установлена ​​и экспортирована.

Но в такой ситуации никогда не полагайтесь на PATH - используйте полный путь:

String command = "/bin/cp demo.txt /shared";

Также: у вас есть разрешение на запись в / общий доступ?

Другие вопросы по тегам