Ich weiß, dass dies wahrscheinlich eine relativ sinnlose Frage ist, aber ich bin gespannt, warum exec false
das Terminal genauso geschlossen wird wie dies der exit
Fall ist.
Ich würde auch gerne wissen, ob dies ein akzeptabler Weg ist, um das Terminal zu schließen oder nicht.
command-line
Drachenliebhaber
quelle
quelle
Antworten:
exec false
ersetzt die aktuelle Shell durch die Ausführung des Befehlsfalse
(hier nicht die eingebaute Shell, sondern eine/bin/false
beliebigefalse
ausführbare Datei, die zuerst in der kommtPATH
), die schnell beendet wird. Wenn die Shell der oberste Prozess war, der in Ihrem Terminalemulator ausgeführt wird, werden keine Prozesse mehr ausgeführt, sodass der Terminalemulator geschlossen wird.Dies ist eine akzeptable Alternative zum Schließen eines Terminals, genau wie bei vielen ähnlichen Befehlen:
Siehe auch: Was macht ein Exec-Befehl?
quelle
bash
wird vor dem Aufrufen eine bestimmte Bereinigung durchgeführt,exec
einschließlich des Schreibens von Befehlen an.bash_history
. Wenn Sie also einfach.bash_history
im selben Terminalfenster speichern und eine neue Shell starten möchten, können Sie dies durch Eingabe tunexec bash
.exec
ruft Befehle auf, die in gefunden wurdenPATH
, keine eingebauten. Gibt beispielsweiseexec [[ $USER = root ]]
einenbash: exec: [[: not found
Fehler zurück. Im Fall von OPfalse
heißt das is/bin/false
und nicht die eingebaute Shell. Ansonsten gute Antwort, daher +1. Als Randnotizexec
kann dies eine Art Abschaltbefehl sein, dh wenn diese drei Befehle in Ihrem Beispiel in ein Skript umgewandelt würden, würde nichts darüber hinausexec
erreicht werden, daexec
die vom Skript aufgerufene Shell durch den Befehl auf der rechten Seite ersetzt würde vonexec
.