2015-03-02 70 views
1

我正在嘗試在我的.inputrc文件中設置keymap,但是我希望只有在我正在運行bash版本> = 4.3時才能設置/執行它。在具有不同bash版本的不同機器上。如何在.inputrc中獲取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從.kshrc開始爲exec bash。不知道這是否有所作爲!

回答

1

您可以使用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 
+0

謝謝!...我不知道你可以從.bashrc中設置'readline'設置。 – Yohanna 2015-03-06 20:50:50

0

$BASH_VERSINFO環境變量是你正在尋找的。它是一個包含版本信息值的數組。但是,它看起來像readline只支持checking the name of the calling program。您可能只想檢查readline library version。這樣,程序運行它並不重要,如果它具有兼容的readline,它將得到你的綁定。