¿Por qué el terminal envía un CR aunque ICRNL esté configurado?

¿Por qué el terminal envía un CR aunque ICRNL esté configurado?

Tengo una terminal con el bashshell.

El terminal tiene el ICRNLindicador configurado (por lo que cuando el terminal envía un CR, se traducirá a LFy luego LFse enviará a bash):

ingrese la descripción de la imagen aquí

Pero hice una prueba que mostró que bashrecibirá CRy no LF. ¿Porqué es eso?

La prueba que hice es ejecutar hexdumpen otra terminal y hacer que lea lo que envía la primera terminal.

Respuesta1

Cuando ejecuta stty -adesde el símbolo del sistema de bash, ve la configuración del terminal mientras bash no lee una línea de comando.

Cuando bash lee una línea de comando, cambia algunas configuraciones del terminal, incluido icrnl(desactivado, porque bash quiere entrada sin formato ya que realiza su propio procesamiento de entrada). Bash restaura la configuración original antes de ejecutar el comando.

Para ver cuáles son las configuraciones del terminal en el indicador de bash, observe qué terminal es y ejecútelo sttydesde otro terminal. Por ejemplo:

  1. En una terminal:

    bash-4.2$ tty
    /dev/pts/3
    bash-4.2$ 
    
  2. En otra terminal:

    $ stty -a </dev/pts/3
    … -icrnl …
    

información relacionada