Um shell interativo é o comportamento padrão quando stdin e stderr do bash são conectados a dispositivos terminais, conforme detectado pela função isatty() ou algum equivalente. Se você está digitando algo nele localmente e não está passando por um canal (por exemplo, cat | bash ), é um TTY e interativo é o padrão. Quando você redireciona de um soquete, ele não é um TTY e requer que o sinalizador entre no modo interativo.
Quando você redireciona para ou de /dev/tcp/<ip>/<port> , não está realmente usando um arquivo em /dev . (Se você tentar ls /dev/tcp , você obtém No such file or directory. ) Esta é realmente uma sintaxe especial aceita por bash , o que faz com que ele abra um soquete para o dado ip e port em vez de executar um arquivo local aberto . E os soquetes não têm modos de "leitura" ou "gravação" da mesma forma que os arquivos, então a sintaxe 0<&1 e 0>&1 é equivalente quando o fd 1 é um soquete.