Comment puis-je empêcher control + d de déconnecter ma session?

26

Je passe régulièrement à une box centos 5. D'une manière ou d'une autre, leurs clés sont mappées, ce qui control+dme déconnectera de mon shell actuel. Si je suis orienté vers une autre utilisation, cela me ramène à l'utilisateur précédent. Si je ne suis pas sudo'ed, ça me déconnecte. Comment puis-je empêcher que cela se produise? J'utilise régulièrement control + d pour annuler l'interpréteur python et parfois j'appuie accidentellement plus d'une fois.

cwd
la source
in csh, you doset ignoreeof
Trevor Boyd Smith

Réponses:

32

Vous recherchez la IGNOREEOFvariable d'environnement si vous utilisez bash:

IGNOREEOF

Contrôle l'action d'un shell interactif à la réception d'un caractère EOF comme unique entrée. S'il est défini, la valeur est le nombre de caractères EOF consécutifs qui doivent être saisis comme premiers caractères sur une ligne d'entrée avant que bash ne se termine. Si la variable existe mais n'a pas de valeur numérique, ou n'a pas de valeur, la valeur par défaut est 10. Si elle n'existe pas, EOF signifie la fin de l'entrée dans le shell.

Donc export IGNOREEOF=42, vous devrez appuyer Ctrl+Dquarante-deux fois avant qu'il ne quitte votre shell.

POSIX seta également un -o ignoreeofparamètre. Consultez donc la documentation de votre shell pour voir si votre shell a cela (il devrait) et pour vérifier sa sémantique exacte.

Tapis
la source
Nice, donne un message "Utiliser la sortie pour quitter le shell", au moins sur Ubuntu. Étant poursuivi par un utilisateur, vous ne voudrez probablement pas le quitter par inadvertance, surtout si l'utilisateur parent est au niveau racine.
Fiasco Labs
1
Personnellement, je trouve cela vraiment ennuyeux, donc je ne le mets nulle part. J'ai découvert cela en essayant de désactiver ce comportement :)
Mat
2
Je ne peux pas résister à être pédant. IGNOREEOFest le nombre de fois où l'EOF est ignoré avant de finalement l'accepter. Donc, dans votre exemple ci-dessus, si vous export IGNOREEOF=42, vous devrez appuyer sur CONTROL-D 43 fois pour quitter - pas 42.
Alvin Thompson
2

tcsh set ignoreeofou set ignoreeof=<any value not 1>fonctionne

codesoar
la source
0

Si vous n'aimez vraiment pas l'avoir Ctrl-d, vous pouvez supprimer le eofcaractère dans les commandes du terminal.

stty eof undef

Après cela, Cntl-dsera tout autre personnage de contrôle.

Arcege
la source
1
J'ai juste essayé cela dans un terminal (urxvt) avec bash, et dans une console simple, et cela n'a pas fonctionné.
Mat
Hmm ... ça fonctionnait et les docs disent toujours que c'est le cas. Une alternative serait d'utiliser <kbd> Ctrl- [</kvd>.
2011
2
Cela empêcherait également la sortie de python.
psusi