Команда для терминала не выполняется из Java-кода
Хочу управлять терминалом из Java-кода. Команды "ls", "pwd" выполняются, а при вводе команды "cd /home" влетают исключения, хотя команда корректная:

Неверная команда
java.io.IOException: Cannot run program "cd": error=2, Нет такого файла или каталога
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at Main.main(Main.java:11)
Caused by: java.io.IOException: error=2, Нет такого файла или каталога
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 4 more
Как это исправить? Код программы привожу ниже. Моя ОС - Debian 9.
public class Main {
public static void main(String[] args){
String cmd = "cd /home";
Runtime run = Runtime.getRuntime();
Process pr = null;
try {
pr = run.exec(cmd);
pr.waitFor();
} catch (IOException e) {
System.err.println("Неверная команда");
e.printStackTrace();
} catch (InterruptedException e) {
System.err.println("Процесс прерван");
} catch (NullPointerException e){
e.printStackTrace();
}
BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
while (true) {
try {
if ((line = buf.readLine()) == null) break;
} catch (IOException e) {
System.err.println("Ошибка ввода-вывода");
}
System.out.println(line);
}
}
}
Ответы (1 шт):
Автор решения: mixer-09
→ Ссылка
Комментаторы правы. Я не хотел менять каталоги. Мне нужно было просмотреть файлы из другой директрории. Это делатся командой ls