Я пытаюсь выполнить команду linux в своем java-коде. Он должен изменить разрешения для некоторых каталогов.
Вот моя попытка:
String Cmd = "echo myPassword | sudo -S chmod 777 -R /home/somePath";
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(Cmd);
Команда, содержащаяся в String Cmd
отлично работает, когда я использовал ее в терминале. Но когда я использую его в своем коде, ничего не происходит. Нет ошибок или предупреждений, которые помогают мне понять мою ошибку. Что может быть проблемой?
Java не будет магическим выбором bash
качестве исполняемого файла. Вы, вероятно, захотите сделать что-то вроде
"bash -c <your command>"
См. Этот вопрос:
(Также |
является bash-вещью. Java не будет магически создавать каналы между процессами.)
|
вещь является частью языка bash и поэтому должна интерпретироваться bash (или подобной оболочкой).