Come e perché "exec false" chiude il terminale?


Risposte:


10

exec falsesta sostituendo la shell corrente con l'esecuzione del comando false(qui non è la shell incorporata ma /bin/falseo qualunque falseeseguibile che viene prima nella PATH) che esce rapidamente. Se la shell era il processo più in esecuzione nell'emulatore di terminale, non ci sono più processi in esecuzione al suo interno, quindi l'emulatore di terminale viene chiuso.

Questo è un modo alternativo accettabile per chiudere un terminale, proprio come sarebbero molti comandi simili:

exec true
exec sleep 0
exec echo
...

Vedi anche: what-does-an-exec-command-do


Come nota a margine, basheseguirà una certa pulizia prima di invocare execincludendo i comandi di scrittura su .bash_history. Quindi, se si desidera semplicemente salvare .bash_historye avviare una nuova shell nella stessa finestra del terminale, è possibile farlo digitando exec bash.
Kasperd,

Ok grazie hai risposto perfettamente alla mia domanda :)
dragonloverlord

E una buona domanda! pertanto ha votato entrambi! ;)
Fabby

@jiliagre execchiama i comandi presenti in PATH, non incorporati. Ad esempio, exec [[ $USER = root ]]restituirà un bash: exec: [[: not founderrore. Nel caso di OP, falsesi chiama is /bin/falsee non la shell integrata. Altrimenti, buona risposta, quindi +1. Come nota a margine, execpuò essere una specie di comando di interruzione, cioè se quei tre comandi nel tuo esempio fossero stati trasformati in uno script, non execsarebbe stato raggiunto nulla oltre il primo , perché execavrebbe sostituito la shell chiamata dallo script con qualunque comando sia sulla destra di exec.
Sergiy Kolodyazhnyy il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.