Eu tenho um terminal com o bash
shell.
O terminal tem o ICRNL
sinalizador definido (portanto, quando o terminal enviar um CR
, ele será traduzido para LF
e, em seguida, LF
será enviado para bash
):
Mas fiz um teste que mostrou que bash
vai receber CR
e não LF
. Por que é que?
O teste que fiz está rodando hexdump
em outro terminal e faz com que ele leia o que o primeiro terminal está enviando.
Responder1
Ao executar stty -a
a partir do prompt do bash, você verá as configurações do terminal enquanto o bash não está lendo uma linha de comando.
Quando o bash está lendo uma linha de comando, ele altera algumas configurações do terminal, inclusive icrnl
(desativado, porque o bash deseja entrada bruta, pois faz seu próprio processamento de entrada). Bash restaura as configurações originais antes de executar o comando.
Para ver quais são as configurações do terminal no prompt do bash, observe qual terminal é esse e execute stty
a partir de outro terminal. Por exemplo:
Em um terminal:
bash-4.2$ tty /dev/pts/3 bash-4.2$
Em outro terminal:
$ stty -a </dev/pts/3 … -icrnl …