Como posso impedir que o controle + d desconecte minha sessão?

26

Eu ssh regularmente para uma caixa de centos 5. De alguma forma, as chaves são mapeadas para que control+deu saia do meu shell atual. Se eu for submetido a outro uso, ele voltará ao usuário anterior. Se não sou processado, apenas me desconecta. Como posso impedir que isso aconteça? Uso regularmente o controle + d para cancelar o interpretador python e, às vezes, pressiono-o acidentalmente mais de uma vez.

cwd
fonte
em csh, você fazset ignoreeof
Trevor Boyd Smith

Respostas:

32

Você está procurando a IGNOREEOFvariável de ambiente se usar bash:

IGNOREEOF

Controla a ação de um shell interativo ao receber um caractere EOF como a única entrada. Se definido, o valor é o número de caracteres EOF consecutivos que devem ser digitados como os primeiros caracteres em uma linha de entrada antes da saída do bash. Se a variável existir, mas não tiver um valor numérico, ou não tiver valor, o valor padrão será 10. Se não existir, o EOF significa o fim da entrada no shell.

Então, export IGNOREEOF=42você terá que pressionar Ctrl+Dquarenta e duas vezes antes que realmente saia do seu shell.

O POSIX também settem uma -o ignoreeofconfiguração. Portanto, consulte a documentação do seu shell para ver se o seu shell possui isso (deveria) e para verificar sua semântica exata.

Esteira
fonte
Bom, dá uma mensagem "Use exit para sair do shell", pelo menos no Ubuntu. Sendo processado em um usuário, você provavelmente não deseja abandoná-lo inadvertidamente, especialmente se o usuário pai estiver no nível raiz.
Fiasco Labs
11
Pessoalmente, acho isso muito chato, então não coloco em lugar nenhum. Descobri isso enquanto tentava desabilitar esse comportamento :) #
Mat
2
Não resisto a ser um pedante. IGNOREEOFé o número de vezes que o EOF é ignorado antes de finalmente aceitá-lo. Assim, no seu exemplo acima, se você export IGNOREEOF=42, você terá que pressionar CONTROL-D 43 vezes para sair - não 42.
Alvin Thompson
2

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

codesoar
fonte
0

Se você realmente não gosta de ter Ctrl-d, pode remover o eofcaractere nos controles do terminal.

stty eof undef

Depois disso, Cntl-dhaverá qualquer outro caractere de controle.

Arcege
fonte
11
Eu apenas tentei isso em um terminal (urxvt) com bash, e em um console comum, e não funcionou.
Mat
Hmm ... isso costumava funcionar e os documentos ainda dizem que sim. Uma alternativa seria usar <kbd> Ctrl- [</kvd>.
Arcege
2
Isso também deixaria de sair do python.
psusi