Não realmente. Sinais etc são manipulados pelo driver de terminal, então o shell realmente não sabe se você digitou um literal ctrl-C ou enviou o mesmo sinal com kill
de outra janela, por exemplo.
Keystrokes -> Terminal -> Terminal driver -> Foreground process
Quando o shell não é o processo de primeiro plano (como quando você o usou para iniciar um programa interativo, ou realmente qualquer processo de primeiro plano), esse programa recebe entrada de teclado e quaisquer sinais do driver de terminal.
A entrada padrão vem do terminal por padrão, mas você pode executar um shell com sua entrada redirecionada de um arquivo ou de um fluxo de rede, por exemplo, e o shell realmente não sabe a diferença. Da mesma forma, o shell pode redirecionar fluxos padrão de entrada, saída e erro para seus processos filhos independentemente de um terminal estar envolvido.