Se eu abrir um terminal (xfce4-terminal 0.6.3, mas duvido que seja importante) e eu ver quais atributos do terminal estão configurados (o BASH está rodando no terminal),
$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -extproc
então eu tenho um monte de atributos de terminal. Bem o suficiente. Se eu der uma olhada no terminal que estou usando:
$ tty
/dev/pts/0
então, em uma nova aba do meu terminal (que nova aba é / dev / pts / 1) eu olho para os atributos do terminal do meu primeiro terminal, parece ter um pouco diferente atributos do terminal:
$ stty -a -F /dev/pts/0
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = <undef>; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -extproc
Notavelmente, o terminal original aqui parece não estar no modo canônico, ele não tem nenhum próximo caractere literal ...
Então, por que isso acontece? Eu gostaria de poder olhar coisas assim para ver, por exemplo, se o moderno ed
usa o modo canônico, mas se há um problema de Heisenberg de olhar para ele de outro terminal, eu não sei como faça isso.
Então, minhas duas principais perguntas:
- O terminal parece ter atributos diferentes quando eu olho para outro terminal? (por exemplo, meu primeiro terminal ainda está no modo canônico, mas
stty -a -F
retorna informações incorretas?)
- Se o terminal realmente alterar os atributos quando eu alterno para o outro terminal, como ele sabe? O 1º terminal é de alguma forma informado quando eu não estou olhando diretamente para ele?
P.S: Eu tentei isso no console do Linux também, só para ter certeza de que não era uma coisa pseudo-terminal. Mesmos resultados.