Bash와 같은 최신 쉘이 원시 모드에서 실행된다고 할 때 "stty -a"가 출력에 "raw"를 나열하지 않는 이유는 무엇입니까?

Bash와 같은 최신 쉘이 원시 모드에서 실행된다고 할 때 "stty -a"가 출력에 "raw"를 나열하지 않는 이유는 무엇입니까?

Bash와 같은 최신 셸이 원시 모드에서 실행된다고 하는데 왜 stty -a출력에 나열되지 않습니까?raw

나는 모든 최신 쉘이 원시 모드에서 실행되어야 한다는 것을 알고 있습니다. 즉:

  • 문자별로 입력하세요.
  • 에코가 비활성화되었습니다.
  • 터미널 입력 및 출력의 모든 특수 처리가 비활성화됩니다.

Readline은 사용자 입력을 처리합니다.

raw그렇다면 왜 출력에 나열되지 않습니까 stty -a?

답변1

그것 덕분에오리지널 모드근사치입니다. 공식적인 정의는 없습니다오리지널 모드실제로 이는 API마다 다른 의미를 갖습니다.

그들이 의미하는 바는 bash이와 같은 쉘이 자체 라인 편집기를 비활성화하는 것을 구현한다는 것 입니다.일부tty 라인 규칙의 특징. 특히, 자체 라인 편집기( icanon일명 설정 -cbreak) 및 로컬에서 라인 규칙을 비활성화해야 합니다 echo. ^C( 설정) isig시 SIGINT 전송 과 같은 다른 회선 규칙 기능을 비활성화하지 않습니다 .

stty -a개별 개별 용어 설정(예 icanon: , echo, 위 isig)을 보고합니다.

stty일부 별칭도 지원합니다.놓다한 번에 여러 설정을 가집니다(예 sane: cooked또는...).raw.

stty raw를 제외한 모든 tty 라인 규율 기능을 비활성화합니다 echo. 따라서 라인 편집기에서 작동하지 않는 일부 기능(예 isig: ) 을 비활성화하며 비활성화 하지 않습니다 .bashechobash

GNU 구현 매뉴얼에서는 stty이를 raw와 동일하다고 설명합니다. 이는 (다른 설정에 관계없이) 조정될 수 있는 개별 설정 -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -icanon -opost -isig -iuclc -ixany -imaxbel -xcase min 1 time 0세트입니다 .termiosstty raw

이는 별칭 이 opost아니며 stty자체적인 개별 tty 라인 규칙 설정이지만 다른 모든 출력 후처리 설정에 영향을 미칩니다 onlcr. 즉, /가 olcuc켜지지 않으면 아무런 효과가 없습니다 . 이는 이 모든 출력 처리를 굳이 끄지 않는 이유를 설명합니다.onlcrolcucopoststty raw

일부 시스템에는 동시에 여러 설정을 지정할 수 있는 cfmakeraw()/ libc 기능이 있습니다. cfmakesane()GNU libc는 cfmakeraw()적어도 GNU와 다릅니다 stty raw. 예를 들어 echo또는 .iuclcixoff

관련 정보