Sé que esta es probablemente una pregunta relativamente inútil, pero tengo curiosidad por saber por qué exec false
cierra la terminal al igual que lo exit
hace.
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 false
está reemplazando el shell actual por la ejecución del comandofalse
(aquí no la orden interna del shell, pero/bin/false
o lo que seafalse
ejecutable 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
bash
realizará cierta limpieza antes de invocar,exec
incluida la escritura de comandos.bash_history
. Entonces, si uno simplemente quiere guardar.bash_history
e iniciar un nuevo shell en la misma ventana de terminal, puede hacerlo escribiendoexec bash
.exec
llama a los comandos encontradosPATH
, no a los integrados. Por ejemplo,exec [[ $USER = root ]]
devolverá elbash: exec: [[: not found
error. En el caso de OP,false
eso se llama is/bin/false
, y no el shell incorporado. De lo contrario, buena respuesta, por lo tanto, +1. Como nota al margen,exec
puede ser una especie de comando de corte, es decir, si esos tres comandos en su ejemplo se convirtieron en un script, noexec
se alcanzaría nada más que primero , porqueexec
reemplazaría el shell llamado por script con cualquier comando a la derecha deexec
.