我的脚本创建了一个chroot
笼子来将 GRUB 安装到 USB,当然以 sudo 运行:
SYSTEM_DIRS=(etc bin sbin var lib lib64 usr proc sys dev tmp)
boot_partition=/media/user/boot
for dir in ${SYSTEM_DIRS[@]}; do
mount --bind /$dir ${boot_partition}/${dir}
done
然后在里面执行一些命令chroot
:
chroot ${boot_partition}/ touch foo # works fine
...
但是当我想执行命令时exit
chroot ${boot_partition}/ exit
我得到:
chroot: failed to execute the command <<exit>>: No such file or directory
为什么会发生这种情况并且有办法解决它?
exit
是内置的 shell 而不是独立的可执行文件,这意味着它不能由chroot
. 但是,即使可以,您的命令也无济于事。此命令在chroot
/executable
的上下文中运行:/path
它不会将调用者留在该 chroot 中;一旦
/executable
完成运行,就会有一个隐式退出:我遇到同样的问题,我的解决方案是当您执行 chroot 时,在其后附加 exit:
然后如果用户退出 chroot,将退出整个 shell