Ввод терминала в Linux: чтение пользовательского ввода из усеченных строк терминала в пределе 4095 символов

В скрипте bash я пытаюсь прочитать строки из стандартного ввода, используя встроенныеread команда после настройкиIFS=$'\n', Строки усекаются до предела 4095 символов, если я вставляю ввод в чтение. Это ограничение, кажется, исходит от чтения из терминала, потому что это работало отлично:

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)

Я испытываю такое же поведение со скриптом Python (не принимал более 4095 входных данных из терминала, но принимал из конвейера):

#!/usr/bin/python

from sys import stdin

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

Даже программа на C работает так же, используя:read(2)

#include 
#include 

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;
}

Во всех случаях я не могу ввести более 4095 символов. Подсказка ввода перестает принимать символы.

Вопрос 1: Есть ли способ интерактивного чтения с терминала длиннее 4095 символов в системах Linux (по крайней мере, Ubuntu 10.04 и 13.04)?

Вопрос 2: Откуда это ограничение?

Затрагиваемые системы: Я заметил это ограничение в Ubuntu 10.04 / x86 и 13.04 / x86, но Cygwin (по крайней мере, последняя версия) еще не усекается до более чем 10000 символов (больше не тестировал, так как мне нужно, чтобы этот скрипт работал в Ubuntu). Используемые терминалы: виртуальная консоль и KDEkonsole (Ubuntu 13.04) иgnome-terminal (Ubuntu 10.04).

Ответы на вопрос(3)

Ваш ответ на вопрос