1

我想做类似的事情:

schroot -c name -u root "export A=3 && export B=4"

但我得到了错误:

Failed to execute “export”: No such file or directory

换句话说,我希望能够在schroot环境中以编程方式执行 shell 命令。获得这种行为的正确方法是什么?

4

3 回答 3

5

我建议:

schroot -c name -u root sh -c "export A=3 && export B=4"

或更好:

schroot -c name -u root -- sh -c "export A=3 && export B=4"

这将运行带有“-c”选项的 shell,告诉它(shell)读取以下参数作为要执行的命令(脚本)。相同的技术适用于其他类似的命令:'su'、'nohup'、...

--选项终止参数schroot并确保命令行其余部分的任何选项都传递给 shell 并由 shell 解释,而不是由schroot. 这是SR_评论中建议的,并且手册页schroot也建议也应该使用它(搜索“分隔符”)。默认情况下,GNUgetopt()函数会置换参数,这在此处不需要。--防止它在--.

于 2010-06-19T06:08:29.610 回答
4
schroot -c name -u root -- export A=3 && export B=4

确保 /etc/schroot/schroot.conf 有

run-exec-scripts=true
run-setup-scripts=true
于 2010-06-19T06:06:06.240 回答
1

你可以试试

schroot -c name -u root "/bin/bash -c 'export A=3; export B=4'"

但这是我第一次听说 schroot。并且导出看起来毫无用处......即使直接从命令行运行双引号的东西,似乎子shell也不想影响父环境。

于 2010-06-19T05:57:14.170 回答