Wie kann ich verhindern, dass control + d meine Sitzung trennt?

26

Ich ssh regelmässig auf eine centos 5 box. Irgendwie sind die Tasten so zugeordnet, dass control+dich mich von meiner aktuellen Shell abmelden kann. Wenn ich zu einer anderen Verwendung aufgefordert werde, kehre ich zum vorherigen Benutzer zurück. Wenn ich nicht sudo'ed bin, trennt es mich einfach. Wie kann ich das verhindern? Ich verwende regelmäßig control + d, um den Python-Interpreter zu beenden, und drücke ihn manchmal mehrmals aus Versehen.

cwd
quelle
in csh, tun Sieset ignoreeof
Trevor Boyd Smith

Antworten:

32

Sie suchen nach der IGNOREEOFUmgebungsvariablen, wenn Sie Folgendes verwenden bash:

IGNOREEOF

Steuert die Aktion einer interaktiven Shell beim Empfang eines EOF-Zeichens als einzige Eingabe. Wenn gesetzt, ist der Wert die Anzahl der aufeinanderfolgenden EOF-Zeichen, die als erste Zeichen in einer Eingabezeile eingegeben werden müssen, bevor die Bash beendet wird. Wenn die Variable vorhanden ist, aber keinen numerischen Wert oder keinen Wert hat, ist der Standardwert 10. Wenn sie nicht vorhanden ist, bedeutet EOF das Ende der Eingabe in die Shell.

So export IGNOREEOF=42und Sie drücken müssen Ctrl+Dzweiundvierzig Mal , bevor es Ihre Shell tatsächlich beendet.

POSIX sethat auch eine -o ignoreeofEinstellung. Lesen Sie in der Dokumentation Ihrer Shell nach, ob Ihre Shell dies hat (sollte), und überprüfen Sie die genaue Semantik.

Matte
quelle
Schön, gibt eine "Use exit, um die Shell zu verlassen" Nachricht, zumindest unter Ubuntu. Wenn Sie in einen Benutzer eingebunden sind, möchten Sie ihn wahrscheinlich nicht versehentlich verlassen, insbesondere wenn der übergeordnete Benutzer Root-Level hat.
Fiasco Labs
1
Ich persönlich finde das sehr ärgerlich, deshalb stelle ich es nirgendwo ein. Das habe ich herausgefunden, als ich versucht habe , dieses Verhalten zu deaktivieren :)
Mat
2
Ich kann nicht widerstehen, Pedant zu sein. IGNOREEOFGibt an, wie oft der EOF ignoriert wird, bevor er endgültig akzeptiert wird. Wenn Sie also in Ihrem obigen Beispiel die export IGNOREEOF=42Taste STRG-D 43 Mal drücken müssen, um zu beenden - nicht 42.
Alvin Thompson,
2

tcsh set ignoreeofoder set ignoreeof=<any value not 1>funktioniert

Codesoar
quelle
0

Wenn Sie es wirklich nicht mögen, Ctrl-dkönnen Sie das eofZeichen in den Terminal-Steuerelementen entfernen .

stty eof undef

Danach Cntl-dwird jedes andere Steuerzeichen angezeigt.

Arcege
quelle
1
Ich habe das nur in einem Terminal (urxvt) mit bash und in einer einfachen Konsole versucht, und es hat nicht funktioniert.
Mat
Hmm ... das hat früher funktioniert und die Dokumentation sagt immer noch, dass es funktioniert. Eine Alternative wäre die Verwendung von <kbd> Strg - [</ kvd>.
Arcege
2
Dies würde auch dazu führen, dass Python nicht mehr verlassen wird.
Psusi