Meu script cria uma chroot
gaiola para instalar o GRUB em um USB, execute como sudo é claro:
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
Em seguida, execute alguns comandos dentro do chroot
:
chroot ${boot_partition}/ touch foo # works fine
...
Mas quando eu quero executar o comandoexit
chroot ${boot_partition}/ exit
Eu recebo:
chroot: failed to execute the command <<exit>>: No such file or directory
Por que isso acontece e há uma maneira de corrigi-lo?
exit
é um shell embutido em vez de um executável autônomo, o que significa que não pode ser executado porchroot
. No entanto, mesmo que pudesse, seu comando não faria nada.Este comando é executado
/executable
no contexto de um/path
chroot:Não deixa o chamador dentro desse chroot; há uma saída implícita assim que
/executable
terminar a execução:Eu encontro a mesma pergunta, minha solução é quando você executa chroot, acrescenta exit depois dele:
então, se o usuário sair do chroot, sairá de todo o shell