Sei que essa é provavelmente uma pergunta relativamente inútil, mas estou curioso para saber por que exec false
fecha o terminal da mesma forma que exit
faz.
Eu também gostaria de saber se essa é uma maneira aceitável de fechar o terminal ou não.
command-line
dragonloverlord
fonte
fonte
Respostas:
exec false
está substituindo o shell atual pela execução do comandofalse
(aqui não o shell embutido, mas/bin/false
ou qualquerfalse
executável que venha primeiro noPATH
) que sai rapidamente. Se o shell foi o processo mais alto em execução no emulador de terminal, não há mais processos em execução dentro dele, portanto o emulador de terminal é fechado.Essa é uma maneira alternativa aceitável de fechar um terminal, assim como muitos comandos semelhantes:
Veja também: what-does-an-exec-command-do
fonte
bash
executará certa limpeza antes de chamar,exec
incluindo comandos de gravação em.bash_history
. Portanto, se alguém simplesmente deseja salvar.bash_history
e iniciar um novo shell na mesma janela do terminal, pode fazê-lo digitandoexec bash
.exec
chama comandos encontrados emPATH
, não embutidos. Por exemplo,exec [[ $USER = root ]]
retornarábash: exec: [[: not found
erro. No caso do OP,false
isso é chamado é/bin/false
, e não o shell interno. Caso contrário, boa resposta, portanto, +1. Como uma observação lateral,exec
pode ser uma espécie de comando de corte, ou seja, se esses três comandos no seu exemplo foram transformados em um script, nada além do primeiroexec
seria alcançado, porqueexec
substituiria o shell chamado pelo script por qualquer comando à direita deexec
.