Je sais que c'est probablement une question relativement inutile, mais je suis curieux de savoir pourquoi exec false
ferme le terminal comme il le exit
fait.
Je voudrais également savoir si c'est une façon acceptable de fermer le terminal ou non.
command-line
dragonloverlord
la source
la source
Réponses:
exec false
remplace le shell actuel par l'exécution de la commandefalse
(ici pas le shell intégré mais/bin/false
ou tout autrefalse
exécutable qui arrive en premier dans lePATH
) qui se termine rapidement. Si le shell était le processus le plus élevé en cours d'exécution dans votre émulateur de terminal, il n'y a plus de processus en cours d'exécution à l'intérieur, l'émulateur de terminal est donc fermé.Il s'agit d'une autre manière acceptable de fermer un terminal, tout comme le seraient de nombreuses commandes similaires:
Voir aussi: what-does-an-exec-command-do
la source
bash
effectuera un certain nettoyage avant d'appeler,exec
y compris l'écriture de commandes dans.bash_history
. Donc, si l'on veut simplement enregistrer.bash_history
et lancer un nouveau shell dans la même fenêtre de terminal, on peut le faire en tapantexec bash
.exec
appelle des commandes trouvées dansPATH
, pas des commandes intégrées. Par exemple,exec [[ $USER = root ]]
retournera unebash: exec: [[: not found
erreur. Dans le cas d'OP,false
cela s'appelle is/bin/false
, et non le shell intégré. Sinon, bonne réponse, donc +1. En guise de remarque,exec
peut être une sorte de commande de coupure, c'est-à-dire si ces trois commandes dans votre exemple ont été transformées en script, rien au-delàexec
ne serait atteint, carexec
remplacerait le shell appelé par script par la commande à droite deexec
.