如果我在 shell 脚本中写
chroot /home/mayank/chroot/codebase
cd SBC
当我运行这个 shell 脚本时,它确实进入了 chroot
但没有执行命令 cd SBC
,
当我退出 chroot
时,它会执行 cd SBC
。
如何通过 shell 脚本实现 chroot
并在 chroot
中执行命令?
最佳答案
当你运行 chroot
而不告诉它做什么时,它会尝试启动 chrooted 交互式 shell session 。所以你的脚本会在那个时候“暂停”,当你完成那个交互式 shell session 时,它会再次退出 chroot。
其中一个快速而肮脏的选择是滥用 here-document,就像这样:
chroot /home/mayank/chroot/codebase /bin/bash <<"EOT"
cd /tmp/so
ls -l
echo $$
EOT
它获取所有行直至 EOT
,并将它们提供给通过 chroot
启动的 bash
。 "EOT"
周围的那些双引号应该确保 bash 传递内容而不是试图扩展变量等。因此 echo $$
应该是内部 chrooted bash
的 PID。
关于bash - 执行 chroot 并在 chroot 中执行命令的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305706/