Bash 前面输入 Enter 显示为 Tab

Bash 前面输入 Enter 显示为 Tab

当我输入以下内容时,ech不执行。相反,预先输入的Enter键会变成Tab.

$ sleep 5[Enter]
ech[Enter]
$ ech
echkpnt          echkpnt.default  echkpnt.fluent   echkpnt.ls_dyna  echo
$ ech<cursor-is-here>

我和同事核实过,他没有这个问题,所以我相信这是可以解决的。我尝试过很多 stty 设置。没有运气。我知道这与“熟”编辑模式有关,但我找不到解决办法。

$ stty -a
speed 38400 baud; rows 44; columns 127; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8
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 -flusho -extproc

编辑:我使用 KiTTY 捕获了原始字符日志。我想我现在正在路上。这似乎是与我的 PS1 提示颜色的交互。这可以解释为什么我的同事没有看到它。当我弄清楚时我会发布答案。


基蒂日志


编辑2:这是我的PS1。

        reset="\[$(tput setaf 0)\]"
        red="\[$(tput setaf 9)\]"
        green="\[$(tput setaf 10)\]"
        yellow="\[$(tput setaf 11)\]"
        white="\[$(tput setaf 15)\]"
        PS1="${green}\$ ${white}"

答案1

我终于发现 bashPROMPT_COMMAND变量是由一些(仍未找到)正在获取的系统/项目文件设置的。我的工作环境有一个非常难以遵循的源文件树。因此,即使我设置了自己的PS1,中的命令PROMPT_COMMAND仍在执行。解决方案是取消设置此变量作为我的用户 bashrc 文件的一部分。

$ echo $PROMPT_COMMAND
printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"

PROMPT_COMMAND 的解释

相关内容