当我输入以下内容时,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/\~}"