OSX配置Bash的历史命令补全等功能

1. 文件配置

配置在~/.bash_profile或者 /.bashrc;按键相关配置在/.inputrc 也可以。 区别是,inputrc为特定的情况处理键盘映射,例如bash的热键,profile中会判断是否有用户自定义的inputrc。当shell是login shell,.bash_profile才会加载,而bashrc正好相反(non-login shell的时候加载)。例如在linux下,当用户登录到一个图形界面,然后打开一个终端terminal,那些shell是non-login shell。例如在OS X登录的时候,并没有运行着一个shell,所以,在运行Terminal.app的时候,其实那是一个login shell。
为了通用,可以在 ~/.bash_profile里写上这个来加载.bashrc,然后把配置写在bashrc里,确保都可以执行。

if["${BASH-no}"!="no"];then
  [ -r ~/.bashrc ] && . ~/.bashrc
fi

2. .bashrc的配置

HISTCONTROL=ignoredups  #忽略重复命令
HISTCONTROL=erasedups #清除重复命令, 多个终端写history的时候还是有可能重复
HISTFILESIZE=1000000000 #命令历史文件大小
HISTSIZE=10000  # 保存历史命令条数
PROMPT_COMMAND="history -a" 
export HISTSIZE PROMPT_COMMAND
bind '"\C-f": forward-word'     #按照单词forward
bind '"\C-b": backward-word'  #按照单词backward
bind '"\e[A": history-search-backward'  #搜索历史补全
bind '"\e[B": history-search-forward'

其中,“HISTFILESIZE 表示记录在文件中的命令条数,HISTSIZE 表示记录在内存中的命令条数,Bash 会首先读取整个历史记录文件, 然后再把它截短到 $HISTSIZE 所定义的长度 – 因此如果你的历史记录文件变得非常非常大, bash 的启动时间会受到一定影响。”解决办法是存档。--https://blog.felixc.at/2013/09/how-to-avoid-losing-any-history-lines/ http://stackoverflow.com/questions/19454837/bash-histsize-vs-histfilesize
history -a 是把多个终端的history强制立刻写入命令历史记录,上面的文章里也有描述。但是发现个问题,写是即时的,但是我这里读不是及时的,已经开的终端并没有即时都到新的history。
下面的bind很好理解,看注释就好了。history-search搜的就是HISTSIZE对应的条数,这个自己test下就可以知道。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、环境配置文件概述 在Linux上开发或者部署应用时,免不了要设置配置文件,比如安装JDK,需要为java可执行...
    Lucky_Micky阅读 3,181评论 0 2
  • 说明,本文所使用的机器是:SUSE Linux Enterprise。 问题定位 这看起来像是环境变量引起的问题,...
    lework阅读 2,973评论 6 11
  • 1、bash 与 shell 管理整个计算机硬件的其实是操作系统的内核(Kernel),这个内核是需要被保护的,所...
    Zhang21阅读 874评论 0 2
  • 1.命令格式:ifconfig [网络设备] [参数] 2.命令功能: ifconfig 命令用来查看和配置网络设...
    Nuuuu阅读 3,830评论 0 12
  • 每一座喧嚣的城市里都有高山之上的寂僧。每一条斑斓的街头都有红尘之外的人路过。不想打扰你的春暖花开,只想同你一道牧马...
    良尔传媒阅读 559评论 0 1