¿Cómo puedo evitar que control + d desconecte mi sesión?

26

Regularmente ssh a una caja de centos 5. De alguna manera, las teclas están asignadas para que control+dme desconecte de mi shell actual. Si subo a otro uso, me devuelve al usuario anterior. Si no me sudo, simplemente me desconecta. ¿Cómo puedo evitar que esto suceda? Regularmente uso control + d para cancelar el intérprete de Python y, a veces, lo presiono accidentalmente más de una vez.

cwd
fuente
en csh, lo hacesset ignoreeof
Trevor Boyd Smith

Respuestas:

32

Está buscando la IGNOREEOFvariable de entorno si usa bash:

IGNOREEOF

Controla la acción de un shell interactivo al recibir un carácter EOF como única entrada. Si se establece, el valor es el número de caracteres EOF consecutivos que deben escribirse como los primeros caracteres en una línea de entrada antes de que salga bash. Si la variable existe pero no tiene un valor numérico, o no tiene ningún valor, el valor predeterminado es 10. Si no existe, EOF significa el final de la entrada al shell.

Entonces export IGNOREEOF=42, tendrá que presionar Ctrl+Dcuarenta y dos veces antes de que realmente salga de su caparazón.

POSIX también settiene una -o ignoreeofconfiguración. Por lo tanto, consulte la documentación de su shell para ver si su shell tiene esto (debería) y para verificar su semántica exacta.

Estera
fuente
Niza, da un mensaje de "Usar salida para dejar el shell", al menos en Ubuntu. Al ser absorbido por un usuario, probablemente no desee abandonarlo sin darse cuenta, especialmente si el usuario principal está en el nivel raíz.
Fiasco Labs
1
Personalmente, me parece realmente molesto, así que no lo configuro en ningún lado. Me enteré de esto mientras trataba de deshabilitar ese comportamiento :)
Mat
2
No puedo resistirme a ser pedante. IGNOREEOFes la cantidad de veces que se ignora el EOF antes de finalmente aceptarlo. Entonces, en su ejemplo anterior, si export IGNOREEOF=42necesita, deberá presionar CONTROL-D 43 veces para salir, no 42.
Alvin Thompson
2

tcsh set ignoreeofo set ignoreeof=<any value not 1>funciona

codeoar
fuente
0

Si realmente no te gusta tenerlo Ctrl-d, entonces puedes eliminar el eofcarácter en los controles del terminal.

stty eof undef

Después de esto, Cntl-dserá cualquier otro personaje de control.

Arcege
fuente
1
Simplemente intenté eso en una terminal (urxvt) con bash, y en una consola simple, y no funcionó.
Mat
Hmm ... eso solía funcionar y los documentos todavía dicen que sí. Una alternativa sería usar <kbd> Ctrl- [</kvd>.
Arcege
2
Esto también haría que ya no salga de Python.
psusi