Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I regularly ssh to a centos 5 box. Somehow they keys are mapped so that control+d will log me out of my current shell. If I am sudo'ed to another use it puts me back to the previous user. If I am not sudo'ed it just disconnects me. How can I keep this from happening? I regularly use control+d to cancel out of the python interpreter and sometimes I accidentally press it more than once.

share|improve this question
add comment

3 Answers

up vote 15 down vote accepted

You're looking for the IGNOREEOF environment variable if you use bash:

IGNOREEOF

Controls the action of an interactive shell on receipt of an EOF character as the sole input. If set, the value is the number of consecutive EOF characters which must be typed as the first characters on an input line before bash exits. If the variable exists but does not have a numeric value, or has no value, the default value is 10. If it does not exist, EOF signifies the end of input to the shell.

So export IGNOREEOF=42 and you'll have to press Ctrl+D fourty-two times before it actually quits your shell.

POSIX set has an -o ignoreeof setting too. So consult your shell's documentation to see if your shell has this (it should), and to check its exact semantics.

share|improve this answer
    
good to know - thanks for sharing! –  cwd Dec 24 '11 at 19:00
    
Nice, gives a "Use exit to leave the shell" message, at least on Ubuntu. Being su'd into a user, you probably don't want to inadvertently leave it, esp if the parent user is root level. –  Fiasco Labs Dec 24 '11 at 19:54
1  
I personally find that really annoying, so I don't set it anywhere. Found out about these while trying to disable that behavior :) –  Mat Dec 24 '11 at 19:59
add comment

tcsh set ignoreeof or set ignoreeof=<any value not 1> works

share|improve this answer
add comment

If you really don't like having Ctrl-d, then you could remove the eof character in the terminal controls.

stty eof undef

After this, Cntl-d will be any other control character.

share|improve this answer
1  
I just tried that in a terminal (urxvt) with bash, and in a plain console, and it did not work. –  Mat Dec 24 '11 at 19:56
    
Hmm... that used to work and docs still say that it does. An alternative would be to use <kbd>Ctrl-[</kvd>. –  Arcege Dec 24 '11 at 20:30
    
This would also make it no longer exit from python. –  psusi Dec 27 '11 at 16:04
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.