Я встретился с 1 024 символьными предельными проблемами при вставке команд в терминальное приложение (макс. 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, но я не испытал затруднений. Таким образом, я вполне уверен, это можно настроить где-нибудь.
Предел, с которым Вы встречаетесь, походит на 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 и удар 4.1 все, кажется, могут “не отставать” от больших вставок (я попробовал 8 201 байт; Vim и удар были медленными, но они приняли целую вставку без любой проблемы).