Existem alguns termos separados aqui que precisam ser definidos de forma independente:
Terminal: Uma interface real de teclado / monitor, como o VT100: link
Emulador de terminal (TTY): Emula um terminal, fornecendo entrada e saída. Pressione ctrl + alt + F2 na maioria das distribuições Linux e você estará em um. Digite "w" no terminal e você verá seu comando w sendo executado por um "tty".
Pseudo-Terminal (PTY): Um par mestre / escravo (ptmx) no qual alguma outra parte do software, como o ssh ou um terminal GUI, fornece uma interface semelhante a terminal através de um escravo . link Digite "w" em um terminal GUI e você verá o comando w listado como proveniente de um pts.
Shell : Um interpretador de linha de comando que é executado no login e interpreta sua entrada. Exemplos disso são bash / zsh.
No entanto, tenha em mente que esses termos se tornaram intercambiáveis na conversa. Quando alguém se refere ao "terminal", "emulador de terminal", "console", "linha de comando" ou "shell", a menos que o contexto especifique o contrário, provavelmente eles estão se referindo de forma mais geral a:
"Essa coisa baseada em texto com a qual eu controlo algum computador."
Editar para atualização de pergunta
Veja abaixo todos os processos que correspondem a pts ou pty:
root@localhost tests]# ps fauxww | grep -P [pt]t[ys]
root 2604 2.3 0.8 50728 34576 tty1 Ss+ 07:09 1:15 \_ /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-VRHaoJ/database -nolisten tcp vt1
root 2569 0.0 0.0 2008 500 tty2 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty2
root 2571 0.0 0.0 2008 500 tty3 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty3
root 2573 0.0 0.0 2008 504 tty4 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty4
root 2575 0.0 0.0 2008 500 tty5 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty5
root 2577 0.0 0.0 2008 504 tty6 Ss+ 07:09 0:00 /sbin/mingetty /dev/tty6
sin 3374 0.2 0.7 90668 28564 ? Sl 07:13 0:09 /usr/bin/python /usr/bin/terminator <<< Added this parent of 3377 manually to see the pts source
sin 3377 0.0 0.0 2076 620 ? S 07:13 0:00 \_ gnome-pty-helper
sin 3378 0.0 0.0 5236 1712 pts/0 Ss 07:13 0:00 \_ /bin/bash
root 4054 0.0 0.0 5124 1676 pts/0 S 07:23 0:00 | \_ bash
root 5034 0.0 0.0 5056 1092 pts/0 R+ 08:03 0:00 | \_ ps fauxww
root 5035 0.0 0.0 4416 740 pts/0 S+ 08:03 0:00 | \_ grep -P [pt]t[ys]
sin 4154 0.0 0.0 5236 1708 pts/1 Ss 07:23 0:00 \_ /bin/bash
sin 4485 0.0 0.0 7252 3500 pts/1 S+ 07:41 0:00 \_ python
Você verá os dois processos relacionados a pts e tty. Você assume que porque você vê tty em ps, esta é a coisa que seu terminal GUI está usando, mas não é. Neste caso, os processos TTY da mingetty são todos os que eu posso usar com ctrl + shift + F2-6, e os pty são escravos relacionados ao processo do terminal da GUI. Para ver com certeza, verifique o lsof do processo do seu terminal GUI:
[root@localhost tests]# ps fauxww | grep terminator
sin 3374 0.2 0.7 90668 28564 ? Sl 07:13 0:08 /usr/bin/python /usr/bin/terminator
[root@localhost tests]# lsof -p 3374 | grep '[pt]t[ys]'
/usr/bin/ 3374 sin 17u CHR 136,0 0t0 3 /dev/pts/0
/usr/bin/ 3374 sin 25u CHR 136,1 0t0 4 /dev/pts/1
Quando você inicializa no modo de texto, você está entrando em um TTY como se pressionasse ctrl + alt + f2 da área de trabalho. Quando você usa terminais SSH / GUI, está usando um pseudo-terminal.