schroot: передать команду для выполнения, как если бы она была в оболочке
Я хочу сделать что-то вроде:
schroot -c name -u root "export A=3 && export B=4"
но я получаю ошибку:
Failed to execute “export”: No such file or directory
Другими словами, я хочу иметь возможность программно выполнять команды оболочки внутри среды schroot. Как правильно получить такое поведение?
3 ответа
Решение
Рекомендую:
schroot -c name -u root sh -c "export A=3 && export B=4"
Это запускает оболочку с опцией '-c', указывающей ей (оболочке) прочитать следующий аргумент как команду (скрипт), которую нужно выполнить. Та же самая техника работает с другими аналогичными командами: 'su', 'nohup', ...
schroot -c name -u root -- export A=3 && export B=4
Убедитесь, что /etc/schroot/schroot.conf имеет
run-exec-scripts=true
run-setup-scripts=true
Вы могли бы попробовать
schroot -c name -u root "/bin/bash -c 'export A=3; export B=4'"
но я впервые слышу о Шруте. И экспорт выглядит так, будто он бесполезен... даже если запускать двойные кавычки напрямую из командной строки, кажется, что дочерняя оболочка не хочет влиять на среду родителя.