Не работает команда терминала Linux в Java

1

Я пытаюсь выполнить команду linux в своем java-коде. Он должен изменить разрешения для некоторых каталогов.

Вот моя попытка:

String  Cmd = "echo myPassword | sudo -S chmod 777 -R /home/somePath";
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(Cmd);   

Команда, содержащаяся в String Cmd отлично работает, когда я использовал ее в терминале. Но когда я использую его в своем коде, ничего не происходит. Нет ошибок или предупреждений, которые помогают мне понять мою ошибку. Что может быть проблемой?

Теги:

1 ответ

5
Лучший ответ

Java не будет магическим выбором bash качестве исполняемого файла. Вы, вероятно, захотите сделать что-то вроде

"bash -c <your command>"

См. Этот вопрос:

(Также | является bash-вещью. Java не будет магически создавать каналы между процессами.)

  • 0
    Может быть, вы должны упомянуть, что | вещь является частью языка bash и поэтому должна интерпретироваться bash (или подобной оболочкой).
  • 0
    Process proc = new ProcessBuilder ("/ bin / bash", "-c", "echo myPassword | sudo -S chmod 777 -R / home / somePath"). Start ();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню