更新:它似乎与 GNU 有关screen
,并且termcap
:请在底部查看新线索。
我正在一个小型嵌入式设备上运行 Bash 4.3,但在说服它我的终端中有超过 80 列时遇到了问题。
如果我键入的命令超过 80 列,它不会继续(最好的情况)或换行到下一行(可接受但不理想),而是开始将新字符放在我正在键入的同一行上。
如果我跑
set | grep COLUMNS
我懂了COLUMNS=80
。但如果我尝试增加这个
export COLUMNS=200
行为没有改变。
提到的处方这里使用shopt -s checkwinsize
没有帮助。
各种细节都可以可能相关:
- 我正在连接的计算机从是 OS X 10.11.6。
- 我的终端是 iTerm2(Build 3.1.beta.4)。
- 我每次都打开一个新的终端窗口以确保新的终端设置。
- 可嵌入设备是 CHIP Pro。
- CHIP Pro 正在运行 Debian:
Linux chip 4.4.30-pro #1 SMP Wed Dec 21 01:50:18 UTC 2016 armv7l GNU/Linux
- Bash 是 4.3.30,为 ARM 编译的(当然):
GNU bash, version 4.3.30(1)-release (arm-unknown-linux-gnueabihf)
- 我正在使用 GNU screen 连接到 CHIP Pro。
- 我已经禁用了
~/.screenrc
获取默认设置的功能。 的输出
shopt
是:autocd off cdable_vars off cdspell off checkhash off checkjobs off checkwinsize on cmdhist on compat31 off compat32 off compat40 off compat41 off compat42 off complete_fullquote on direxpand off dirspell off dotglob off execfail off expand_aliases on extdebug off extglob off extquote on failglob off force_fignore on globstar off globasciiranges off gnu_errfmt off histappend on histreedit off histverify off hostcomplete on huponexit off interactive_comments on lastpipe off lithist off login_shell on mailwarn off no_empty_cmd_completion off nocaseglob off nocasematch off nullglob off progcomp on promptvars on restricted_shell off shift_verbose off sourcepath on xpg_echo off
更新:
我刚刚发现使用
screen
's width 命令 (Ca W) 会显示消息“您的 termcap 未指定如何将终端的宽度更改为 132”。但是,使用
width 300
、width -w 300
、 和 并width -d 300
不能解决问题。
答案1
我会使用resize
:它更新stty
设置(这是直接连接到嵌入式设备所丢失的设置 - 也是 所需的设置screen
)。
resize
是一个命令行实用程序(开发者xterm
),它检查实际屏幕尺寸(使用 VT100 转义序列)并更新stty
以反映该尺寸以及可以执行以更新环境变量的打印命令。
更改$COLUMNS
内部screen
并不是很有效,因为screen
“知道”终端屏幕有多大,并且会干扰采用不同尺寸的程序。