首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.inputrc中获取Bash版本

如何在.inputrc中获取Bash版本
EN

Stack Overflow用户
提问于 2015-03-02 20:18:22
回答 2查看 289关注 0票数 1

我试图在我的keymap文件中设置一个.inputrc,但是我希望它只在运行bash 4.3时才被设置/执行,因为我在不同的机器上使用不同的bash版本。

目前,我的.inputrc有:

代码语言:javascript
复制
set editing-mode vi

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

我需要这样的东西:

代码语言:javascript
复制
$if ( bash-version >= 4.3 )
   $if mode=vi 
      set keymap vi-insert
      "jk":vi-movement-mode
   $endif
$endif

注意:其中一台机器不直接运行bash,而是先运行KSH,然后是来自.kshrc的bash。不过,我不确定这会不会有什么区别!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-03 01:32:16

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-03-02 20:33:35

您要寻找的是$BASH_VERSINFO环境变量。它是一个包含版本信息值的数组。但是,看起来readline只支持检查调用程序的名称。您可能需要检查一下读行库版本。那样的话,不管是哪个程序在运行它,如果它有一个兼容的读行,它就会得到您的绑定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28818731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档