Comment et pourquoi «exec false» ferme-t-il le terminal?


Réponses:


10

exec falseremplace le shell actuel par l'exécution de la commande false(ici pas le shell intégré mais /bin/falseou tout autre falseexécutable qui arrive en premier dans le PATH) 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:

exec true
exec sleep 0
exec echo
...

Voir aussi: what-does-an-exec-command-do


En remarque, basheffectuera un certain nettoyage avant d'appeler, execy compris l'écriture de commandes dans .bash_history. Donc, si l'on veut simplement enregistrer .bash_historyet lancer un nouveau shell dans la même fenêtre de terminal, on peut le faire en tapant exec bash.
kasperd

Ok merci vous avez parfaitement répondu à ma question :)
dragonloverlord

Et une bonne question! donc voté à la fois! ;)
Fabby

@jiliagre execappelle des commandes trouvées dans PATH, pas des commandes intégrées. Par exemple, exec [[ $USER = root ]]retournera une bash: exec: [[: not founderreur. Dans le cas d'OP, falsecela s'appelle is /bin/false, et non le shell intégré. Sinon, bonne réponse, donc +1. En guise de remarque, execpeut ê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à execne serait atteint, car execremplacerait le shell appelé par script par la commande à droite de exec.
Sergiy Kolodyazhnyy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.