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.


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.


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


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.