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
: ) 을 비활성화하며 비활성화 하지 않습니다 .bash
echo
bash
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
세트입니다 .termios
stty raw
이는 별칭 이 opost
아니며 stty
자체적인 개별 tty 라인 규칙 설정이지만 다른 모든 출력 후처리 설정에 영향을 미칩니다 onlcr
. 즉, /가 olcuc
켜지지 않으면 아무런 효과가 없습니다 . 이는 이 모든 출력 처리를 굳이 끄지 않는 이유를 설명합니다.onlcr
olcuc
opost
stty raw
일부 시스템에는 동시에 여러 설정을 지정할 수 있는 cfmakeraw()
/ libc 기능이 있습니다. cfmakesane()
GNU libc는 cfmakeraw()
적어도 GNU와 다릅니다 stty raw
. 예를 들어 echo
또는 .iuclc
ixoff