在 RHAS4 上的 bash 中,为什么按删除键会切换大小写而不是删除?

在 RHAS4 上的 bash 中,为什么按删除键会切换大小写而不是删除?

我有一个旧的 RedHat 盒子,需要对其进行一些工作:

$ lsb_release -a
LSB Version:    1.3
Distributor ID: RedHatEnterpriseWS
Description:    Red Hat Enterprise Linux WS release 4 (Nahant Update 7)
Release:        4
Codename:       NahantUpdate7

我在使用 shell 提示符时遇到了严重的问题。(bash)特别是,如果我在命令行中输入以下内容:

$ abcdefghijklmnopqrstuvwxyz

...然后,如果我用箭头返回到该m角色,然后按下Delete,我会得到这样的结果:

$ abcdefghijkLMNopqrstuvwxyz

(但情况会变得更糟。如果我再四处乱窜更多的,它每次只能翻转一个字母。)

我将我的stty设置与运行正常的 Ubuntu 机器进行了比较,没有发现明显差异。它们如下:

$ stty -a
speed 38400 baud; rows 58; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

这让我抓狂。我还应该查找什么?这可能是什么原因造成的?

答案1

现在完全说得通了……

我公司使用的产品中有一条杂散线.profile,因为很多人仍在使用ksh

set -o vi

好吧,猜猜vi如果你输入会发生什么~?没错,它会交换大小写!猜猜如果你输入会发生什么3~?它会交换 3 个字符的大小写!(虽然我现在还不能确定如何解释这种不一致的行为,有时它会交换一个,有时它会交换 3 个……)

无论如何,set -o vi从我的 .profile 中删除即可解决问题。

答案2

.inputrc您的主目录中是否有文件?如果没有,请尝试创建一个包含以下内容的文件:

"\e[3~": delete-char

如果有这样的文件,也许它做了一些不该做的事情?

相关内容