Sé que esta es probablemente una pregunta relativamente inútil, pero tengo curiosidad por saber por qué exec falsecierra la terminal al igual que lo exithace.
También me gustaría saber si esta es una forma aceptable de cerrar la terminal o no.
command-line
dragonloverlord
fuente
fuente

Respuestas:
exec falseestá reemplazando el shell actual por la ejecución del comandofalse(aquí no la orden interna del shell, pero/bin/falseo lo que seafalseejecutable que viene por primera vez en elPATH) que rápidamente salidas. Si el shell era el proceso superior que se ejecutaba en su emulador de terminal, no hay más procesos ejecutándose dentro de él, por lo que el emulador de terminal está cerrado.Esta es una forma alternativa aceptable de cerrar una terminal, al igual que muchos comandos similares:
Ver también: what-does-an-exec-command-do
fuente
bashrealizará cierta limpieza antes de invocar,execincluida la escritura de comandos.bash_history. Entonces, si uno simplemente quiere guardar.bash_historye iniciar un nuevo shell en la misma ventana de terminal, puede hacerlo escribiendoexec bash.execllama a los comandos encontradosPATH, no a los integrados. Por ejemplo,exec [[ $USER = root ]]devolverá elbash: exec: [[: not founderror. En el caso de OP,falseeso se llama is/bin/false, y no el shell incorporado. De lo contrario, buena respuesta, por lo tanto, +1. Como nota al margen,execpuede ser una especie de comando de corte, es decir, si esos tres comandos en su ejemplo se convirtieron en un script, noexecse alcanzaría nada más que primero , porqueexecreemplazaría el shell llamado por script con cualquier comando a la derecha deexec.