Schauen Sie sich Ihre Konfiguration an, wenn entweder bash-Variablen oder Shell-Optionen gesetzt sind:
Bash-Variablen
( Abschnitt 5.2 im Bash-Referenzhandbuch)
IGNOREEOF
Steuert die Aktion der Shell bei Erhalt eines EOF-Zeichens als einzige Eingabe. Wenn festgelegt, gibt der Wert die Anzahl aufeinanderfolgender EOF-Zeichen an, die als erstes Zeichen in einer Eingabezeile gelesen werden können, bevor die Shell beendet wird. Wenn die Variable zwar existiert, aber keinen numerischen Wert hat (oder keinen Wert hat), ist der Standardwert 10 . Wenn die Variable nicht vorhanden ist, gibt EOF das Ende der Eingabe an die Shell an. Dies gilt nur für interaktive Shells.
Zum Beispiel IGNOREEOF=2
Ändern des Shell-Verhaltens: Das Set-Builtin
set
Damit können Sie die Werte von Shell-Optionen ändern
( Abschnitt 4.3.1 im Bash-Referenzhandbuch)
-o ignoreeof
Eine interaktive Shell wird beim Lesen von EOF nicht beendet.
Ihre Frage beantworten
Ich möchte beide nach Möglichkeit unabhängig voneinander steuern (z. B. diese Funktion für Nicht-Login-Shells deaktivieren). Ist das möglich?
Ja. Von Ihnen gelieferte Skripts sollten prüfen, ob es sich bei der Shell um eine Login-Shell handelt, und die Variable entsprechend festlegen.
if shopt -q login_shell; then IGNOREEOF=10; else IGNOREEOF=0; fi
Beachten 10
Sie, dass Sie den Wert von still immer noch mit Ctrl+ verlassen können D. Sie brauchen nur 11 aufeinanderfolgende Schläge.