我正在尝试在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
。不确定这是否会产生影响!
答案 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,它将获得你的绑定。