Откуда этот предел длины линии bash? - PullRequest
4 голосов
/ 25 сентября 2019

В Solaris 11, на котором запущена Bash 4.4.19 (стандартная установка?), В строке ввода имеется ограничение на 256 символов.Я хотел бы понять, откуда исходит этот предел.

Я пролистал справочную страницу, но не нашел ничего, что касалось этого.Это происходит только тогда, когда библиотека readline не используется.В приведенных ниже строках длина echo 678[...]23456 составляет 256 символов

sfmg10 0 5:37pm> uname -a
SunOS sfmg10 5.11 11.4.6.4.0 sun4v sparc sun4v
sfmg10 0 5:37pm> /usr/bin/bash --version
GNU bash, version 4.4.19(1)-release (sparc-sun-solaris2.11)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sfmg10 0 5:38pm> /usr/bin/bash -norc -noprofile
bash-4.4$ set -o emacs
bash-4.4$ echo 6789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
6789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
bash-4.4$ set +o emacs
bash-4.4$ echo 67890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
67890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
bash-4.4$ echo 678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
bash-4.4$ echo 6789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
bash: 8: command not found

Первая строка с эхо-кодом составляет 258 символов и выполняется так, как ожидается.
Вторая строка эхо-кода состоит из 256 символов и выполняется так, как ожидается.
Третья строка эха содержит 257 символов и не выводит.
Четвертая строка эха содержит 258 символов, и bash появляется, чтобы выбросить первые 257 символов и затем выполнить оставшиеся символы.

IЯ пробовал это на нескольких системах Linux, Mac OSX и FreeBSD и не смог воспроизвести странное поведение.

На Solaris 9 с выпуском bash 2.05.0 (1) и Solaris 10 с bash 3.2.57 (1) -релиз (та же версия, что и в одном из блоков Mac OSX, я получаю то же странное поведение, что и Solaris 11. Я думал, что Solaris 10 немного отличается, но это потому, что я получаю к нему доступ через putty вместо xterm.Разница между замазкой и xterm описана в моем комментарии ниже.

Почему bash выбрасывает первые 257 символов строк 257 characters или дольше?Это ошибка или особенность?Это вызвано bash, Solaris или чем-то еще?Могу ли я изменить этот номер без перекомпиляции bash?

...