Termux заявляет, что он не работает как традиционный Linux bash, так как он устанавливает свою собственную среду виртуального выхода при первой настройке в своем каталоге данных в /data/data/com.termux/files/usr, см. здесь и здесь Кроме того, согласно официальным документам для Android , метод exec(command)
,
Выполняет указанную строковую команду вотдельный процесс.
Это удобный метод.Вызов формы exec (command) ведет себя точно так же, как и вызов exec (command, null, null).
Так что, если это отдельный процесс, при выполнении команды он будетзапустите его в каталоге этого процесса (каждый процесс в Linux получает свой каталог и получает PID, который используется os).Так что команда ls
дает вам просто то, что находится внутри каталога этого процесса.Вы должны быть где-то вроде /proc/31415/
и есть только файл acct
(cgroup в обычном Linux).
Что вам нужно сделать, это запустить команду внутри каталога, объявив ее при вызове getRuntime ().exec () см. ссылку выше, чтобы найти нужный вам.Я бы предложил использовать переопределение, которое обрабатывает все параметры.Вам понадобится что-то вроде этого:
String[] cmd = {"mkdir", "testDir"};
File env = new File(getFilesDir().getAbsolutePath());
Runtime.getRuntime().exec(cmd, null, env);
Кроме того, не помешает взглянуть на установочный код Termux (exec (). Это даст вам хорошийне обращайте внимания на настройку среды и работу с основными командами.
Кроме того, я думаю, что вы уже сделали это, но дважды проверьте, чтобы убедиться, что вы запрашиваете разрешение WRITE_EXTERNAL_STORAGE
для своего приложения.