Ubuntu 的 bash 不支持 INPUTRC

Ubuntu 的 bash 不支持 INPUTRC

我用来INPUTRC.inputrc文件从我的主文件夹中移走。它曾经可以工作(就像我的一样GNU bash, version 5.1.4),但是在 bash 中version 5.1.16,我发现INPUTRC不再受尊重。

$ which $SHELL
/usr/bin/bash

$ $SHELL --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
. . .

$ env | grep INPUTRC
INPUTRC=/home/foo/bin/.inputrc

$ ls ~/.inputrc
ls: cannot access '/home/foo/.inputrc': No such file or directory
  1. 我的INPUTRC文件包含
set echo-control-characters off
set completion-ignore-case on

但两者都没有受到尊重。

  1. 如果我创建一个~/.inputrc包含以上两行的文件,那么它们都可以工作。

  2. 如果我创建一个~/.inputrc指向 my 的文件/home/foo/bin/.inputrc,那么这两种情况都可以。

  3. 但是,如果我删除该~/.inputrc文件并INPUTRC再次单独使用,那么这两种情况都不再有效。

所以,

  1. 我使用的 bash 版本有错误吗?
  2. 我如何判断 bash 是否荣誉INPUTRC
  3. 您建议如何调试该问题?

更新:

感谢@meuh,他给出了一种找到真正原因的方法,正如我发现的(甚至在发布问题之前),如果我这样做,bind -f /home/foo/bin/.inputrc我的终端将完全锁定,并且只会响应“^C”,甚至盲目输入reset进入它并按回车键不会修复它,而我的两行版本bind -f可以。因此,也许我古老的 .inputrc 文件(>20 年前)正在对新的 bash 造成一些麻烦,并且使用 INPUTRC 会比 ~/.inputrc 更明显地触发它。

通过反复试验,我找到了导致问题的原因,如下:

$ cat .inputrc.nok
set editing-mode emacs
set horizontal-scroll-mode Off
set keymap emacs-meta
set echo-control-characters off
set completion-ignore-case on

接着就,随即,

  • bind -f .inputrc.nok将锁定终端会话并且
  • 指向INPUTRC它不会有任何效果。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu Jammy Jellyfish (development branch)
Release:  22.04
Codename: jammy

$ apt-cache policy bash
bash:
  Installed: 5.1-6ubuntu1
  Candidate: 5.1-6ubuntu1
  Version table:
 *** 5.1-6ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
        100 /var/lib/dpkg/status

更新2:

实际上,这不仅仅是 Ubuntu Jammy 的问题,我回到 Ubuntu 18.04.1,发现行为完全一样。然而,@Kusalananda 一切都很好,所以如果有人使用 Ubuntu,请尝试一下。谢谢。

相关内容