如何在.inputrc中获得Bash版本

时间:2015-03-02 20:18:22

标签: bash readline

我正在尝试在keymap文件中设置.inputrc,但我希望只有在运行bash版本> = 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,然后从exec bash执行bash为.kshrc。不确定这是否会产生影响!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

$BASH_VERSINFO环境变量是您正在寻找的内容。它是一个包含版本信息值的数组。但是,看起来readline仅支持checking the name of the calling program。您可能只想查看readline library version。这样,运行它的程序无关紧要,如果它具有兼容的readline,它将获得你的绑定。