![我无法在交互式命令模式下输入空格](https://linux22.com/image/96019/%E6%88%91%E6%97%A0%E6%B3%95%E5%9C%A8%E4%BA%A4%E4%BA%92%E5%BC%8F%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BE%93%E5%85%A5%E7%A9%BA%E6%A0%BC.png)
一个非常奇怪的情况。如果我输入交互式命令 - 在这种情况下tasksh
,nslookup
我无法输入空格。例如:
tasksh> add "my new task"
变成
tasksh> add"mynewtask"
自然是行不通的。我想这可能与此有关,tasksh
但后来我nslookup
在交互模式下检查了 - 这是同一件事。这种情况发生在 Linux 上4.6.7-1-MANJARO
,但不会发生在 OpenSUSE Leap 42.1 上。
我应该如何解决这个非常令人讨厌的事情?
我尝试运行不同的终端(gnome-terminal、xfce4-terminal、xterm),它给出了相同的结果。
答案1
最可能的解释是您不小心绑定了Space一个在配置文件之一中没有可见效果的命令。
检查 shell 初始化文件中的stty
命令。这至少会直接影响依赖终端原始行编辑器的程序,并且可能间接影响带有像样行编辑器的程序,因为它们试图与 stty 设置保持兼容。
如果问题仅出现在某些程序中,则有问题的配置可能是阅读线图书馆。该库由 bash 和许多其他程序使用。如果该密钥在 bash 中有效,但在其他使用 readline 的程序中无效,则可能是因为 bash 覆盖了它。 readline的配置文件是.inputrc
。
如果您只在 bash 中遇到问题,请检查您的.bashrc
(这是任何与终端相关的配置应该去的位置)和其他 bash 配置文件(以防配置位于错误的位置)。
在评论中,您提到~/.inputrc
包含
Space: magic-space
magic-space
是一个 bash 命令。其他程序不明白这一点。要么将此设置作为 bash 的条件:
$if Bash
Space: magic-space
$endif
或者从中删除此设置.inputrc
并在其中定义它.bashrc
:
bind 'Space: magic-space'