Linux-Terminal-Eingabe: Lesen von Benutzereingaben aus Terminal-Kürzungszeilen mit einer Zeichenbegrenzung von 4095

In einem Bash-Skript versuche ich, Zeilen aus der Standardeingabe mit der integrierten Funktion zu lesenread Befehl nach dem EinstellenIFS=$'\n'. Die Zeilen werden bei einer Zeichenbegrenzung von 4095 abgeschnitten, wenn ich Eingaben in den Lesevorgang einfüge. Diese Einschränkung scheint auf das Lesen vom Terminal zurückzuführen zu sein, da dies einwandfrei funktioniert hat:

fill=
for i in $(seq 1 94); do fill="${fill}x"; done
for i in $(seq 1 100); do printf "%04d00$fill" $i; done | (read line; echo $line)

Ich habe das gleiche Verhalten mit Python-Skript (habe nicht länger als 4095 Eingaben vom Terminal akzeptiert, aber von Pipe akzeptiert):

#!/usr/bin/python

from sys import stdin

line = stdin.readline()
print('%s' % line)

Sogar das C-Programm funktioniert mitread(2):

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    char buf[32768];
    int sz = read(0, buf, sizeof(buf) - 1);
    buf[sz] = '\0';
    printf("READ LINE: [%s]\n", buf);
    return 0;
}

In allen Fällen kann ich nicht mehr als 4095 Zeichen eingeben. Die Eingabeaufforderung akzeptiert keine Zeichen mehr.

Frage 1: Gibt es eine Möglichkeit, in Linux-Systemen, die länger als 4095 Zeichen sind, interaktiv von einem Terminal zu lesen (mindestens Ubuntu 10.04 und 13.04)?

Frage 2: Woher kommt diese Einschränkung?

Betroffene Systeme: Ich habe diese Einschränkung in Ubuntu 10.04 / x86 und 13.04 / x86 bemerkt, aber Cygwin (mindestens in der neuesten Version) schneidet noch nicht bei über 10000 Zeichen ab (wurde nicht weiter getestet, da ich dieses Skript in Ubuntu zum Laufen bringen muss). Verwendete Terminals: Virtual Console und KDEkonsole (Ubuntu 13.04) undgnome-terminal (Ubuntu 10.04).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage