Quais são exatamente os passos desde o momento em que inicio o pseudoterminal (CTRL+ALT+T) até o momento em que o shell começa a escutar a entrada do teclado?
Eu sei que isso acontece basicamente da seguinte maneira: o processo do terminal chama dev/pts/ptmx
, então o lado escravo é criado (por exemplo /dev/pts/0
) e então o processo do terminal se bifurca (eu acho?), configura uma sessão e executa o shell.
No entanto, estou curioso para saber exatamente como isso funciona.
O que mais me confunde nesse procedimento é o seguinte:
- Achei que meu emulador de terminal (pseudo-terminal) é,
xterm-256color
já que é isso que eu recebo quando digitoecho $TERM
. Então,xterm
chamariaptmx
. No entanto, quando verifico o PPID do shell (bash), na verdade é/usr/libexec/gnome-terminal-server
. Então, estou confuso, qual é a diferença entre esses dois?xterm
Primeiro bifurca/exec/usr/libexec/gnome-terminal-server
e depois chamaptmx
e depois bifurca/exec o shell, ou o quê? - Eu pensei que a sessão fosse algo exclusivamente vinculado ao terminal. Ou seja, cada terminal tem apenas uma sessão e pronto. No entanto, quando eu investiguei mais a fundo, descobri que é "coisa do kernel" e que cada processo tem uma sessão, incluindo
/usr/libexec/gnome-terminal-server
. Por que ele então cria uma nova sessão para o bash e não usa apenas a do bash,/usr/libexec/gnome-terminal-server
já que isso é, na verdade, um terminal? - Como ele
/usr/libexec/gnome-terminal-server
sabe qual shell iniciar/executar (no meu caso bash)? Ele lê de algum lugar, posso mudar isso?
Estou curioso para saber exatamente como essas etapas funcionam.
Obrigado