BSD 系统上 tty 的配置

configuration of tty on BSD system

对于 Linux debian-linux 4.19.0-1-amd64 #1 SMP Debian 4.19.12-1 (2018-12-22) x86_64 GNU/Linux 使用 xfce 我得到:

alain@debian-linux:~$ dbus-send --system --type=method_call --print-reply --dest
=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListActivatable  
Names

OpenBSD LeOpenBSD 6.4 上的相同命令 GENERIC.MP#364 amd64 with xfce 我得到:

ktop/DBus org.freedesktop.DBus.ListActivatableNames   <

在 linux,在屏幕末尾,我们转到下一行。
在 BSD(OpenBSD-NetBSD) 上,命令行在同一行继续,第一个单词消失。
在 xfce-terminal-emulator、xterm 或 TTY (Alt-Ctrl-F3)

中是一样的

我尝试在默认部分的 gettytab 中添加 am,但没有成功。
Termcap 手册页说:
如果当光标到达右边距时显示环绕到下一行的开头,那么它应该具有 am 功能。
我能做什么?

简答

如果您希望当前 shell 没有此功能

set +o emacs

如果您想生成一个没有此功能的新 shell

ksh +o emacs

长答案

此行为主要是由于 OpenBSD 支持 shell input interactive editing mode

In these editing modes, if a line is longer than the screen width (see the COLUMNS parameter), a ‘>’, ‘+’, or ‘<’ character is displayed in the last column indicating that there are more characters after, before and after, or before the current position, respectively. The line is scrolled horizontally as necessary.

如果要删除此功能,可以使用 sh or ksh 中的 set build-in 命令。您还可以在调用期间使用 +o

删除此标志

最后,如果您想检查您当前的 shell 是否启用了某些交互式编辑模式,您可以不带参数调用 set -oset +o。它会给你类似的东西,这里是 set -o 命令:

$ set -o
Current option settings
allexport      off  keyword        off  notify         off  verbose        off 
braceexpand    on   login          on   nounset        off  vi             off 
bgnice         off  markdirs       off  physical       off  viraw          off 
csh-history    off  monitor        on   posix          off  vi-show8       off 
emacs          off  noclobber      off  privileged     off  vi-tabcomplete on  
errexit        off  noexec         off  restricted     off  vi-esccomplete off 
gmacs          off  noglob         off  sh             off  xtrace         off 
ignoreeof      off  nohup          on   stdin          on   
interactive    on   nolog          off  trackall       off

这里是 set +o 命令:

$ set +o
set +o allexport -o braceexpand +o bgnice +o csh-history +o emacs +o errexit 
+o gmacs +o ignoreeof -o interactive +o keyword -o login +o markdirs -o monitor 
+o noclobber +o noexec +o noglob -o nohup +o nolog +o notify +o nounset 
+o physical +o posix +o privileged +o restricted +o sh -o stdin +o trackall 
+o verbose +o vi +o viraw +o vi-show8 -o vi-tabcomplete +o vi-esccomplete 
+o xtrace

我认为您实际描述的可能是在 Linux 和大多数 BSD 上使用的两种非常不同的 shell 之间的区别,以及它们非常不同的 command-line 编辑实现。

这可能与各种终端仿真器实现之间的差异无关;也没有描述这些终端仿真的终端功能数据库之间的差异。

在 BSD 系统上,默认的 shell 的 command-line 编辑器会根据光标的位置滚动整个屏幕。在某些 Linux 系统上,我看到默认的 shell 的 command-line 编辑器将长行换行以继续下一行。