(presumably because it creates a new bash instance
Sim, é o mesmo com praticamente todos os mecanismos de troca de usuários ( su
, sudo -s
, etc.), mas sua variante torna muito óbvio que um novo processo bash
está sendo executado.
and so the rest of the commands are either ignored or run in the new instance and then exited).
Não, o shell pai simplesmente espera que sudo
- e, portanto, a nova instância do bash - saia. (Como seria com qualquer outro comando.)
- O shell principal executa
sudo bash
e aguarda que ele saia.- o sudo executa
bash
e espera que ele saia.-
O
- bash fornece um prompt interativo no qual você executa seus comandos root.
- Quando você digita 'exit', o bash sai.
- o sudo termina de esperar, limpa e sai também.
- o sudo executa
- O shell principal termina de esperar, executa o próximo comando, se houver.
No entanto, você pode dizer a qualquer shell para executar comandos de maneira não interativa usando sua opção -c
, que aceita uma única linha de comando: por exemplo, %código%. (Isso é usado nos bastidores por bash -c "cd /etc && ls"
ou ssh
.)
Para obter um shell interativo, certifique-se de que o último comando nesse subcomando seja um que execute um shell interativo. (Isso é bastante algumas instâncias bash profundas, mas não é realmente um problema.)
sudo bash -c "cd /etc/foo && bash"