如何在 .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 从 .kshrc
是 exec 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
我正在尝试在我的 .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 从 .kshrc
是 exec 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