如何在 .inputrc 中获取 Bash 版本

How to get Bash version in .inputrc

我正在尝试在我的 .inputrc 文件中设置 keymap,但我希望仅当我 运行 正在 bash version >= 4.3 因为我在不同 bash 版本的不同机器上工作。

目前我的 .inputrc 有:

set editing-mode vi

$if mode=vi 
    set keymap vi-insert
    "jk":vi-movement-mode
$endif

我需要这样的东西:

$if ( bash-version >= 4.3 )
   $if mode=vi 
      set keymap vi-insert
      "jk":vi-movement-mode
   $endif
$endif

注意: 其中一台机器不直接 运行 bash,KSH 首先是 运行 然后 bash 从 .kshrcexec bash。不确定这是否有所作为!

$BASH_VERSINFO 环境变量就是您要查找的内容。它是一个包含版本信息值的数组。但是,看起来 readline 只支持 checking the name of the calling program. You might want to just check the readline library version。这样,什么程序都没有关系 运行 它,如果它有一个兼容的 readline,它就会得到你的绑定。

您可以使用 bind 命令在 .bashrc 中设置这些 readline 设置。例如:

set -o vi

major=${BASH_VERSINFO[0]}
minor=${BASH_VERSINFO[1]}
if (( major > 4 )) || (( major == 4 && minor >= 3 )); then
    bind -m vi-insert '"jk": vi-movement-mode'
fi