如何读取Bash中Readline变量history-size(hist-size)的取值并验证其与$HISTSIZE是否一致?
如何读取Bash中Readline变量history-size(hist-size)的取值并验证其与$HISTSIZE是否一致?
嗨,我来帮你搞定这个问题!其实读取Readline里hist-size变量的方法很简单,用Bash自带的bind命令就可以实现,不需要额外工具,下面一步步来:
1. 直接查看hist-size的当前值
在终端里输入这条命令,就能精准过滤出hist-size的具体取值:
bind -v | grep '^set hist-size'
执行后你会看到类似这样的输出:set hist-size 1000,后面的数字就是它的当前值。
如果只是想快速确认,也可以简化成:
bind -v | grep hist-size
不过前面带^set的写法能避免匹配到其他相关变量,结果更精准。
2. 验证它和*$HISTSIZE*是否一致
要对比两个值是否相等,可以写一段简单的脚本一次性完成:
# 提取Readline的hist-size值 readline_hist=$(bind -v | grep '^set hist-size' | awk '{print $3}') # 获取Shell的HISTSIZE变量值 shell_hist=$HISTSIZE # 对比并输出结果 if [ "$readline_hist" -eq "$shell_hist" ]; then echo "✅ Readline的*hist-size*和Shell的*$HISTSIZE*取值一致:$readline_hist" else echo "❌ 两者取值不同:Readline *hist-size* = $readline_hist,Shell *$HISTSIZE* = $shell_hist" fi
执行这段命令就能直接看到对比结果啦。
补充说明
默认情况下,Readline的hist-size确实会继承*$HISTSIZE的值,但如果你的~/.inputrc(Readline的配置文件)里手动设置过set hist-size xxx,那它就会覆盖默认的继承值,这时候两者就可能不一样了。如果需要修改hist-size*,直接在~/.inputrc里添加对应的设置,重启终端或者执行bind -f ~/.inputrc就能生效。
备注:内容来源于stack exchange,提问作者Anton Wessel
相关产品推荐
相关产品推荐

