Ctrl D não sair bash após sourcing bashrc

1

O bashrc não foi escrito por mim e origina muitos arquivos de configuração diferentes. Ao fazer o sourcing, não consigo mais sair do bash com Ctrl + D .

Eu encontrei esta pergunta relacionada sobre o zsh , e gostaria gostaria de saber o mecanismo usado para fazer o mesmo com o bash.

Ao digitar Ctrl + D em um shell de login, recebo:

Use "logout" to leave the shell.

Quando em um shell de não-login,

Use "exit" to leave the shell.

Como essas mensagens são traduzidas dependendo da localidade em uso, isso provavelmente não é um script do sistema. Eu gostaria de controlar os dois independentemente, se possível (desabilite essa funcionalidade para shells não-login, por exemplo). Isso é possível?

    
por MayeulC 19.04.2018 / 11:10

1 resposta

3

Dê uma olhada na sua configuração se as variáveis do bash ou as opções do shell estiverem definidas:

Variáveis de Bash

( Seção 5.2 no Manual de Referência do Bash)

IGNOREEOF

Controls the action of the shell on receipt of an EOF character as the sole input. If set, the value denotes the number of consecutive EOF characters that can be read as the first character on an input line before the shell will exit. If the variable exists but does not have a numeric value (or has no value) then the default is 10. If the variable does not exist, then EOF signifies the end of input to the shell. This is only in effect for interactive shells.

Por exemplo, IGNOREEOF=2

Modificando o comportamento do shell: o conjunto incorporado

set allows you to change the values of shell options

( Seção 4.3.1 no Manual de Referência do Bash)

-o ignoreeof

An interactive shell will not exit upon reading EOF.

Como chegar à sua pergunta

I would like to control both independently, if possible (disable this functionality for non-login shells, for instance). Is that possible?

Sim. Scripts que você fonte deve verificar se o shell é um shell de login e definir a variável de acordo, algo como isto: p>

if shopt -q login_shell; then IGNOREEOF=10; else IGNOREEOF=0; fi

Observe que o valor de 10 ainda permite que você deixe o shell com Ctrl + D ; você só precisa de 11 toques consecutivos.

    
por 19.04.2018 / 13:38

Tags