Je sais que c'est probablement une question relativement inutile, mais je suis curieux de savoir pourquoi exec falseferme le terminal comme il le exitfait.
Je voudrais également savoir si c'est une façon acceptable de fermer le terminal ou non.
Je sais que c'est probablement une question relativement inutile, mais je suis curieux de savoir pourquoi exec falseferme le terminal comme il le exitfait.
Je voudrais également savoir si c'est une façon acceptable de fermer le terminal ou non.
Réponses:
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
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.
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.