这条打击线的长度限制从哪里来?

问题描述 投票:2回答:1

在运行Bash 4.4.19(标准安装?)的Solaris 11上,输入行上的排序限制为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个字符,然后执行其余字符。

我已经在多个Linux,Mac OSX和FreeBSD系统上尝试过,并且无法重现异常行为。

在具有bash 2.05.0(1)发行版的Solaris 9和具有bash 3.2.57(1)发行版的Solaris 10上(与Mac OSX盒之一相同的版本,我得到的行为与Solaris 11相同。曾以为Solaris 10稍有不同,但这是因为我是通过putty而不是xterm访问它的。在下面的评论中描述了putty / xterm的区别。

为什么bash会抛出257个字符或更长的行中的前257个字符?这是错误还是功能?这是bash,Solaris还是其他原因引起的?我可以更改此数字而无需重新编译bash吗?

在运行Bash 4.4.19(标准安装?)的Solaris 11上,输入行上的排序限制为256个字符。我想了解这个限制的来源。我已经略读了...

bash solaris
1个回答
0
投票

Shell程序可以使用的最大字符数(不是参数)可以通过检查找到:

© www.soinside.com 2019 - 2024. All rights reserved.