无法使用 bash、python 插入反斜杠,在 csh、空闲时可以正常工作

Mar*_*cus 4 command-line bash 10.10 special-characters 11.04

我在插入反斜杠时遇到了一个奇怪的问题(Ubuntu 10.10 和 11.04,升级没有改变)。我的键盘(瑞典 Thinkpad T400)上的组合键是 AltGr + ?。然而,这似乎不是问题,因为它只出现在某些程序中。

例如,对于 bash 4.2、python 2.7、python 3.2、swipl 5.10,我无法在终端中键入或复制粘贴反斜杠。使用 ash、csh、ghci、nano、vi、idle、idle3,一切都按预期运行,我可以输入和复制粘贴。例如,复制

echo gurka\\\\agurk
Run Code Online (Sandbox Code Playgroud)

(四个字面反斜杠)并将其粘贴到 csh 中(然后按回车键),我得到

$ csh
% echo gurka\\\\agurk
gurka\\agurk
Run Code Online (Sandbox Code Playgroud)

但是用 bash,我得到

$ echo gurkaagurk
gurkaagurk
Run Code Online (Sandbox Code Playgroud)

不幸的是,在许多新安装之后,我第一次注意到它,我不知道它何时首次出现。我怀疑第一组常见的某个库的错误或冲突配置,但不是第二组,但我不确定如何继续。这非常烦人,我很感激提示。

更新: konsole 的行为以及使用 Ctrl-Alt-F1 获得的任何结果(这是我测试过的)的行为都是相同的。它也不适用于 gnome-terminal 和 xterm,但这两个指示错误(通过闪烁)。关于检查什么的想法?

更新:问题已解决,感谢 Gilles!这是 readline 库 (.inputrc) 的错误配置

马库斯

Gil*_*il' 7

我认为您使用的所有程序都使用readline库来读取输入。所以我猜你错误地配置了 readline 库。系统配置文件是/etc/inputrc,每个用户的文件是~/.inputrc. 您可能在绑定中放置了过多的反斜杠,因此不是将命令绑定到转义序列,而是将其绑定到以反斜杠开头的序列。

右:  "\e[1;5C": forward-word  (通过发送转义序列Ctrl+ Left
:错误的  "\\e[1;5C": forward-word  (\ e [ 1 ; 5 C

如果问题仅在 bash 中,则有问题的绑定将在~/.bashrc. 请注意,.bashrc上面的绑定将被写入bind "\\e[1;5C: forward-word",带有两个反斜杠,因为 bash 在将定义传递给 readline 之前会进行一轮反斜杠扩展。(bind '\e[1;5C: forward-word'也可以,因为反斜杠在单引号中失去了它们的特殊含义。)