执行chroot并在chroot中执行命令的Shell脚本

时间:2018-07-12 12:28:00

标签: bash shell chroot

如果我在shell脚本中写

chroot /home/mayank/chroot/codebase
cd SBC

当我运行此Shell脚本时,它确实进入了chroot,但没有执行命令cd SBC, 当我退出chroot时,它将执行cd SBC

如何通过外壳程序脚本实现chroot并在chroot中执行命令?

2 个答案:

答案 0 :(得分:2)

在运行chroot时不告诉它怎么做,它将尝试启动chrooted交互式shell会话。因此,您的脚本会在那一刻“暂停”,当您完成该交互式Shell会话后,它将再次从chroot中退出。

一种快速而肮脏的选择是滥用此处的文档,如下所示:

chroot /home/mayank/chroot/codebase /bin/bash <<"EOT"
cd /tmp/so
ls -l
echo $$
EOT

哪个行最多包含EOT,并将它们馈送到bash开始的chroot中。 "EOT"周围的双引号应确保bash传递内容而不试图扩展变量等。因此,echo $$应该是内部bash的内部PID。

答案 1 :(得分:0)

我找到了解决办法,

chroot / work3 / tmp_GU / $ build_env / sbcbuild / chroot ./test.sh

在chroot提供脚本之后,对我来说一切正常。

chroot文件夹中存在

test.sh。 test.sh中的所有命令都将在chroot文件夹中执行。

所以基本上在chroot之后给出命令

人chroot

chroot [OPTION] NEWROOT [COMMAND [ARG] ...]