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

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

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

터미널은 ICRNL플래그를 설정합니다(따라서 터미널이 를 보낼 때 로 CR변환되고 로 LF전송 LF됩니다 bash).

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

그런데 테스트를 해보니 bash받을 수 있을지 CR없을지 결과가 나왔습니다 LF. 왜 그런 겁니까?

내가 한 테스트는 hexdump다른 터미널에서 실행하고 첫 번째 터미널에서 보낸 내용을 읽도록 하는 것이었습니다.

답변1

bash 프롬프트에서 실행 하면 stty -a터미널 설정이 표시되고 bash는 명령줄을 읽지 않습니다.

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

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

  1. 터미널에서:

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

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

관련 정보