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

标签 bash shell chroot

如果我在 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/

相关文章:

linux - 如果每个结果使用多个命令,则无法获得 bash

linux - 在 Ubuntu 重启时删除挂载文件夹的内容

c - 如何在 chroot 中执行命令?

linux - 保存输入的命令供以后使用

使用 ssh 获取数据的 Linux 变量给出警告 : here-document at line 95 delimited by end-of-file (wanted `SSHSQLTEXT' )

bash - Docker 和 cron 环境

python - 如何在 bash 中将前缀组合到 ls 的输出?

shell - 如何将 AppleScript 路径转换为 ​​posix 路径并传递给 shell 脚本?

php - Apache2 mod_ruid2 和 Document ChRoot — 无法连接到 MySQL 数据库

bash - 错误: Macro % has illegal name (%define) whenever I run yum