ICRNL이 설정되어 있는데 터미널에서 CR을 보내는 이유는 무엇입니까?

ICRNL이 설정되어 있는데 터미널에서 CR을 보내는 이유는 무엇입니까?

쉘이 있는 터미널이 있습니다 bash.

터미널에는 ICRNL플래그가 설정되어 있습니다(따라서 터미널이 를 보내면 CR로 변환되고 LFLF로 전송됩니다 bash).

여기에 이미지 설명을 입력하세요

bash그러나 나는 그것이 받을 것이고 CR받지 않을 것이라는 것을 보여주는 테스트를 했습니다 LF. 왜 그런 겁니까?

내가 만든 테스트는 hexdump다른 터미널에서 실행되어 첫 번째 터미널이 보내는 내용을 읽도록 합니다.

답변1

Bash 프롬프트에서 실행하면 stty -aBash가 명령줄을 읽지 않는 동안 터미널 설정이 표시됩니다.

Bash가 명령줄을 읽을 때 icrnl(Bash는 자체 입력 처리를 수행하므로 원시 입력을 원하기 때문에 꺼짐)를 포함하여 일부 터미널 설정을 변경합니다. Bash는 명령을 실행하기 전에 원래 설정을 복원합니다.

bash 프롬프트에서 터미널 설정이 무엇인지 확인하려면 이것이 어떤 터미널인지 확인하고 stty다른 터미널에서 실행하십시오. 예를 들어:

  1. 한 터미널에서:

    bash-4.2$ tty
    /dev/pts/3
    bash-4.2$ 
    
  2. 다른 터미널에서:

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

관련 정보