5

Я столкнулся с проблемой ограничения в 1024 символа при вставке команд в приложение терминала (макс. OS X 10.5.8), на котором запущена оболочка TC (/bin/tcsh).

Это можно последовательно воспроизвести, вставив следующие команды в приложение терминала:

echo       0       0       0       0       0
echo       1       1       1       1       1
echo       2       2       2       2       2
echo       3       3       3       3       3
echo       4       4       4       4       4
echo       5       5       5       5       5
echo       6       6       6       6       6
echo       7       7       7       7       7
echo       8       8       8       8       8
echo       9       9       9       9       9
echo      10      10      10      10      10
echo      11      11      11      11      11
echo      12      12      12      12      12
echo      13      13      13      13      13
echo      14      14      14      14      14
echo      15      15      15      15      15
echo      16      16      16      16      16
echo      17      17      17      17      17
echo      18      18      18      18      18
echo      19      19      19      19      19
echo      20      20      20      20      20
echo      21      21      21      21      21
echo      22      22      22      22      22
echo      23      23      23      23      23
echo      24      24      24      24      24
echo      25      25      25      25      25

Сначала он работает, как и ожидалось, но в какой-то момент не работает:

myself@mymac|~> echo       1       1       1       1       1
1 1 1 1 1
myself@mymac|~> echo       2       2       2       2       2
2 2 2 2 2
etc. etc. (good)
myself@mymac|~> echo      21      21      21      21      21
21 21 21 21 21
myself@mymac|~> echo      22      22      22      echo      22      22      22      echo       23      23
22 22 22 echo 22 22 22 echo 23 23
echo      24      24      24      24      24
echo      25      25      25      25      25
(bad - gibberish)

Так что это путается через некоторое время. На самом деле, у меня есть 44 символа в строке плюс один для разрыва строки, и проблемы возникают в строке 23 на символе 34. Это означает, что проблема возникает после 45 * 22+34 = 1024 символов. Это, очевидно, предел, который установлен где-то ... кто-нибудь знает, как его расширить, чтобы он мог принимать больше символов и строк?

Я попробовал то же самое на машине Linux с tcsh, но у меня не было проблем. Так что я уверен, что это можно где-то подправить.

1 ответ1

4

Ограничение, с которым вы сталкиваетесь, похоже на буфер tty-впереди. Он «жестко запрограммирован» в ядре Mac OS X.

xnu-1504.9.17 соответствует 10.6.5, но эти биты не изменились, по крайней мере, с 10.4.

Если вы просто хотите запустить команды, и вам все равно, что ввод и вывод могут чередоваться чередованием нечетными способами, вы можете временно отключить редактирование командной строки tcsh с помощью unset edit перед вставкой (повторно включите его с помощью set edit). Это переключает tty в «канонический режим», где ввод является линейным. Это облегчает оболочке «следить» за входящим вставленным текстом.

Не все программы на базе tty имеют эту проблему. Похоже, что GNU Emacs 21.2.1, Vim 7.3 и bash 4.1 способны «идти в ногу» с большими вставками (я пробовал 8201 байт; Vim и bash работали медленно, но без проблем принимали всю вставку).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .