对于Linux上这样的命令,debian Linux 4.19.0-1-amd64#1 SMP debian 4.19.12-1(2018-12-22)x86_64 GNU/Linux with xfce I get:
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上的相同命令与xfce I get:
ktop/DBus org.freedesktop.DBus.ListActivatableNames <
在linux上,在屏幕的最后,我们转到下一行
在BSD(OpenBSD-NetBSD)上,命令行在同一行继续,第一个单词消失
它在xfce终端模拟器、xterm或TTY(Alt-Ctrl-F3)中是相同的
我试图在gettytab中的defout部分添加我,但没有成功
Termcap手册页说:
如果光标到达右边距时,显示内容一直延伸到下一行的开头,那么它应该具有am功能
我能做什么?
简短回答
如果你想让你的当前外壳没有这个功能
set +o emacs
如果你想在没有这个功能的情况下生成一个新的外壳
ksh +o emacs
答案很长
这种行为主要是由于OpenBSD支持的shell输入交互编辑模式。
在这些编辑模式中,如果一行比屏幕宽度长(请参阅COLUMNS参数),则会出现'>'、'+'或'<'字符显示在最后一列中,表示在当前位置之后、之前和之后或之前分别有更多字符。根据需要水平滚动该行。
如果要删除此功能,可以使用sh
或ksh
中的set
内置命令。您也可以在调用期间使用+o
删除此标志
最后,如果您想检查当前shell上是否启用了一些交互式编辑模式,可以无参数地调用set -o
或set +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及其非常不同的命令行编辑实现之间的差异。
这可能与各种终端仿真器实现之间的差异无关;也没有描述那些终端仿真的终端能力数据库之间的差异。
在BSD系统上,默认shell的命令行编辑器根据光标的位置在屏幕的整个宽度上滚动。在一些Linux系统上,我看到默认shell的命令行编辑器换行,然后继续下一行。