当导出 COLUMNS 不起作用时如何扩展列

当导出 COLUMNS 不起作用时如何扩展列

更新:它似乎与 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
    

更新:

  1. 我刚刚发现使用screen's width 命令 (Ca W) 会显示消息“您的 termcap 未指定如何将终端的宽度更改为 132”。

  2. 但是,使用width 300width -w 300、 和 并width -d 300不能解决问题。

答案1

我会使用resize:它更新stty设置(这是直接连接到嵌入式设备所丢失的设置 - 也是 所需的设置screen)。

resize是一个命令行实用程序(开发者xterm),它检查实际屏幕尺寸(使用 VT100 转义序列)并更新stty以反映该尺寸以及可以执行以更新环境变量的打印命令。

更改$COLUMNS内部screen并不是很有效,因为screen“知道”终端屏幕有多大,并且会干扰采用不同尺寸的程序。

相关内容